Notes for all clinical screens:
- Patient banner (for patient-facing workflows) or Donor banner (for donor workflows) appears at top.
- All date/time fields use facility time zone; 24-hour format.
- All lists support Arabic/English labels; data stored in neutral codes.
SCR-BLOODBANK-001: Donor Registration & Screening
Purpose
Capture donor demographics, Emirates ID, contact details, screening questionnaire, vitals, consent, and deferral decisions for voluntary donors and blood drives, in compliance with UAE MOH blood safety guidelines and UAE PDPL.
Field Specifications
Field
Type
Required
Validation
Default
Notes
Donor Search
Text + button
No
Min 2 chars; search by name, Emirates ID, phone
—
Searches blood_donors and optionally patients (if donor is also patient)
Emirates ID
Text
Yes (for UAE residents)
Regex ^784-\d{4}-\d{7}-\d$; uniqueness in blood_donors
—
Auto-format 784-YYYY-NNNNNNN-C; allow override for non-residents (passport)
All inputs have <label> elements; grouping of vitals and decisions uses <fieldset>/<legend> in implementation.
Error messages associated via aria-describedby and announced in an aria-live="polite" region.
Colour-coded eligibility badges always include text labels.
Keyboard navigation: logical tab order; radio groups navigable via arrow keys.
Support for right-to-left text in Arabic fields (dir="rtl").
Responsive / Mobile
On tablets (≥768px): two-column layout as shown.
On small screens (<768px): stacks into single column; buttons become full-width.
Touch targets ≥44px height; numeric keyboards for vitals and Emirates ID on mobile.
Questionnaire presented as paginated sections on mobile to reduce scrolling.
SCR-BLOODBANK-002: Blood Collection & Processing
Purpose
Record donation event details, collection status, pilot tube tracking, component processing, labeling, and quarantine/release actions, with barcode-driven workflows and linkage to LIS for infectious disease testing.
Field Specifications
Field
Type
Required
Validation
Default
Notes
Donation ID
Read-only
Yes
Auto-generated unique
—
blood_donations.donation_id
Donor Banner
Read-only
Yes
—
—
Shows donor name, ID, last Hb, deferral status
Collection Site
Dropdown
Yes
From facilities/locations
From donor registration
blood_donations.collection_site
Collector (Technologist)
Dropdown / auto
Yes
Must be active user with permission
Current user
blood_donations.collector_id
Donation Date
Date
Yes
≤ today
Today
Donation Start Time
Time
Yes
Not in future
Now
Donation End Time
Time
Yes
≥ start time
—
Donation Type
Dropdown
Yes
IN (Whole blood, Apheresis platelets, Apheresis plasma, Other)
Whole blood
blood_donations.donation_type
Volume Collected (mL)
Numeric
Yes
>0 and ≤ max allowed (based on weight)
—
blood_donations.volume_ml
Complications
Multi-select
No
From master (e.g., vasovagal, hematoma)
—
blood_donations.complications
Screening Pass
Checkbox
Yes
Must be true to proceed
Checked
blood_donations.screening_pass
Infectious Disease Status
Read-only
Yes
Pending / Negative / Positive / Indeterminate
Pending
Updated from LIS
Collection Status
Read-only
Yes
IN (In progress, Completed, Aborted)
In progress
blood_donations.status
Pilot Tube Barcodes
Repeating barcode inputs
Yes
Each tube scanned must be unique
—
Linked to LIS specimen IDs
Component List
Dynamic table
Yes
At least one component
—
Derived from processing template
Component Type
Dropdown (per row)
Yes
From master Blood Component Types
—
blood_components.component_type
Component ABO/Rh
Read-only
Yes
From donor type
—
blood_components.abo_group, rh_type
Component Volume (mL)
Numeric
Yes
>0
—
blood_components.volume_ml
Collection Datetime
Read-only
Yes
From donation end time
—
blood_components.collection_datetime
Expiry Datetime
Read-only
Yes
Calculated from component type rules
—
blood_components.expiry_datetime
Special Processing Flags
Checkboxes
No
—
—
Irradiated, Leukoreduced, Washed
Quarantine Status
Read-only
Yes
Quarantined Pending Tests / Released / Discarded
Quarantined
blood_quarantine_log linkage
Label Printing
Button
Yes
Requires all mandatory fields
—
Triggers ISBT 128 label print
Validation Messages
Condition
Message
Severity
Volume exceeds allowed max
"Collected volume exceeds maximum allowed for donor weight. Please verify."
Error
Donation end time < start time
"End time cannot be earlier than start time."
Error
No pilot tubes scanned
"At least one pilot tube must be collected and scanned."
Error
Component row missing type or volume
"Please complete component type and volume for all rows."
Error
Attempt to release components before negative tests
"Components cannot be released until all mandatory infectious disease tests are reported negative."
Error
Infectious disease positive
"Donation is reactive. All associated components must be permanently quarantined and discarded per biohazard protocol."
Error (blocks release)
Actions / Buttons
Action
Description
Permissions
Start Collection
Marks donation as In progress
Blood Bank Technologist
Complete Collection
Validates fields and sets status to Completed
Blood Bank Technologist
Abort Collection
Marks donation as Aborted with reason
Blood Bank Technologist, Supervisor
Generate Components
Auto-creates component rows based on donation type template
Blood Bank Technologist
Print Labels
Prints ISBT 128-compliant labels for each component and pilot tube
Blood Bank Technologist
Quarantine Components
Creates entries in blood_quarantine_log with reason "Pending infectious disease testing"
Blood Bank Technologist
Release Components
Upon negative results, updates inventory and quarantine log
Senior Technologist, Supervisor
Mark for Discard
For positive/indeterminate results; creates blood_discard_log entries
Supervisor
Accessibility
Barcode input fields support manual entry with clear labels for screen readers.
Status changes announced via aria-live region (e.g., "Donation marked as completed").
Tables use <th scope="col"> and <th scope="row"> for component rows.
Responsive / Mobile
Optimized for tablets at collection sites; two-column layout collapses to single column on phones.
Barcode scan buttons integrate with device camera where supported; fallback to manual entry.
Large buttons for Start/Complete/Abort to support gloved use.
SCR-BLOODBANK-003: Type & Screen / Crossmatch Workbench
Purpose
Unified workbench for managing type & screen orders, performing ABO/Rh typing, antibody screening and identification, and recording crossmatch results with historical comparison, in alignment with UAE MOH and international transfusion safety standards.
Field Specifications
Workbench is split into three panels: Worklist, Patient Details, Testing Results.
Worklist Panel
Field
Type
Required
Validation
Default
Notes
Filter by Status
Dropdown
No
IN (All, Pending, In Progress, Completed)
Pending
Filter by Priority
Dropdown
No
IN (Routine, Urgent, Emergency)
All
Search (Patient / MRN)
Text
No
Min 2 chars
—
Filters worklist
Worklist Table
Table
—
—
—
Shows specimen ID, patient, location, order type, status
Worklist rows focusable; pressing Enter selects specimen.
Crossmatch and type fields grouped with <fieldset> and descriptive legends.
Discrepancy warnings displayed in an aria-live="assertive" region.
Responsive / Mobile
On smaller screens, worklist collapses to a top dropdown; main panel occupies full width.
Crossmatch section can be toggled to full-screen on mobile for easier barcode scanning.
SCR-BLOODBANK-004: Blood Component Inventory
Purpose
Provide real-time view and management of blood component inventory across facilities/locations, with FEFO (First Expiry First Out) ordering, filters by component and ABO/Rh, and actions to issue or discard units.
Field Specifications
Field
Type
Required
Validation
Default
Notes
Component Type Filter
Dropdown
No
From master Blood Component Types
All
ABO Group Filter
Dropdown
No
From ABO master
All
Rh Filter
Dropdown
No
IN (All, Positive, Negative)
All
Facility / Location Filter
Dropdown
No
From facilities/locations
Current facility
Status Filter
Dropdown
No
IN (Available, Reserved, Quarantined, Issued, Discarded)
Inventory table supports keyboard navigation and column sorting via keyboard.
Low-stock alerts use icons and text, not colour alone.
Responsive / Mobile
On mobile, table collapses to cards per unit with key fields and actions.
Filters accessible via slide-down panel.
SCR-BLOODBANK-005: Blood Issue & Return
Purpose
Manage issuing of compatible blood components to patients based on transfusion orders, ensure correct patient-component matching, track pickup and return, and handle re-inventory or discard of returned units.
Field Specifications
Field
Type
Required
Validation
Default
Notes
Transfusion Order Search
Text
Yes
Search by order ID, patient, MRN
—
Selected Order Summary
Read-only
Yes
—
—
Shows component type, units requested, indication, priority
Patient Banner
Read-only
Yes
—
—
Compatible Units List
Table
Yes
Only units matching ABO/Rh and special requirements
—
From crossmatch_records and inventory
Crossmatch Status
Read-only
Yes
Completed / Pending / Not required
—
Issue To (Ward/Unit)
Dropdown
Yes
From locations
From order encounter
Issue To Person
Text / dropdown
Yes
Must be valid staff ID
—
Nurse picking up
Pickup Verification
Barcode + checkbox
Yes
Unit ID scanned must match selected component
—
Issue Time
Datetime
Yes
≤ now
Now
Return Processing Section
Collapsible
No
—
—
For returned units
Returned?
Checkbox
Conditional
If checked, return fields required
—
Return Time
Datetime
Conditional
≥ issue time
—
Return Condition
Dropdown
Conditional
IN (Unopened, Opened, Damaged, Temperature excursion)
—
Re-Inventory Eligible
Read-only
Conditional
Based on time out and condition
—
Business rules
Return Processed By
Dropdown/auto
Conditional
Active technologist
Current user
Validation Messages
Condition
Message
Severity
No compatible units available
"No compatible units available for this order. Please review inventory or contact supervisor."
Error
Issue without crossmatch when required
"Crossmatch is required for this patient/order before issuing units."
Error
Unit not picked up within threshold
"Unit has been out of controlled storage for more than {threshold} minutes. Re-issue is not permitted; process as return/discard."
Warning
Return marked re-inventory but condition unsuitable
"Unit cannot be returned to inventory due to condition/time out of fridge."
Error
Actions / Buttons
Action
Description
Permissions
Select Order
Loads order and compatible units
Technologist
Issue Selected Unit(s)
Records issue event and updates inventory
Technologist
Print Issue Tag
Prints patient/unit tag and checklist
Technologist
Process Return
Updates inventory or discard log based on rules
Technologist, Supervisor
Alert Unreturned Units
Shows list of units not returned within threshold
Technologist, Supervisor
Accessibility
Issue checklist presented as ordered list with clear labels.
Barcode scanning fields have text alternatives.
Responsive / Mobile
Designed primarily for blood bank workstations; mobile view supports quick issue confirmation and return processing.
SCR-BLOODBANK-006: Transfusion Administration
Purpose
Bedside interface for nurses to verify patient and product, record vitals and monitoring timeline, document completion, and trigger reaction workflow, supporting barcode scanning and timed prompts.
Field Specifications
Field
Type
Required
Validation
Default
Notes
Patient Verification
Barcode + read-only banner
Yes
Wristband ID must match patient
—
Product Verification
Barcode + read-only
Yes
Unit ID, ABO/Rh, patient name must match issue tag
—
Two-Nurse Check
Checkbox pair
Yes
Both nurses must confirm
—
verifier1_id, verifier2_id
Pre-Transfusion Vitals
Structured inputs
Yes
All fields required (Temp, BP, Pulse, Resp, SpO2)
—
Stored in pre_vitals_json
Start Datetime
Datetime
Yes
≥ now - small tolerance
Now
transfusion_administration.start_datetime
Rate (mL/hr)
Numeric
Yes
>0 and ≤ max allowed
—
transfusion_administration.rate
Monitoring Timeline
Read-only timeline + inputs
Yes
Prompts at 15 min, then per protocol
—
Interim Vitals
Structured inputs
Yes
At each prompt
—
Reaction Alert Button
Button
No
—
—
Triggers WF-BB-006
End Datetime
Datetime
Yes
≥ start time
—
Volume Infused (mL)
Numeric
Yes
≤ component volume
—
Post-Transfusion Vitals
Structured inputs
Yes
All fields required
—
post_vitals_json
Reaction Occurred
Checkbox
Yes
If checked, reaction details required
No
transfusion_administration.reaction_occurred
Status
Read-only
Yes
In progress / Completed / Stopped due to reaction
—
Validation Messages
Condition
Message
Severity
Patient/product mismatch
"Patient and product identifiers do not match. Do NOT start transfusion."
Error (hard stop)
Missing pre-transfusion vitals
"Pre-transfusion vital signs are required before starting."
Error
Monitoring interval missed
"Scheduled monitoring time has passed. Please record vitals and assess patient."
Structured workflow to document suspected transfusion reactions, symptoms, investigation steps, classification, MOH hemovigilance reporting, and follow-up actions.
Field Specifications
Field
Type
Required
Validation
Default
Notes
Linked Administration ID
Read-only
Yes
Must reference existing transfusion
—
transfusion_reactions.admin_id
Patient Banner
Read-only
Yes
—
—
Component ID
Read-only
Yes
—
—
Reaction Onset Time
Datetime
Yes
≥ transfusion start
—
transfusion_reactions.onset_time
Reaction Type
Dropdown
Yes
From master Transfusion Reaction Types
—
transfusion_reactions.reaction_type
Severity
Dropdown
Yes
Mild / Moderate / Severe / Life-threatening
—
transfusion_reactions.severity
Symptom Checklist
Multi-select
Yes
At least one symptom
—
transfusion_reactions.symptoms
Clerical Check OK
Radio
Yes
Yes/No
—
transfusion_reactions.clerical_check_ok
DAT Result
Dropdown
No
Positive / Negative / Not done
—
transfusion_reactions.dat_result
Hemolysis Check
Dropdown
No
Present / Absent / Not done
—
transfusion_reactions.hemolysis_check
Investigation Findings
Textarea
Yes
Max 1000 chars
—
transfusion_reactions.investigation_findings
Classification
Dropdown
Yes
From master classification codes
—
transfusion_reactions.classification
Reported to MOH
Checkbox
Conditional
Required for serious reactions
—
transfusion_reactions.reported_to_moh
MOH Report Reference
Text
Conditional
Required if reported
—
For audit
Investigated By
Dropdown/auto
Yes
Technologist/Physician
Current user
transfusion_reactions.investigated_by
Follow-up Actions
Textarea
No
Max 500 chars
—
transfusion_reactions.follow_up
Validation Messages
Condition
Message
Severity
Serious reaction but not reported
"Serious reactions must be reported to UAE MOH hemovigilance. Please mark 'Reported to MOH' and enter reference."
Error
Missing symptom selection
"Please select at least one symptom."
Error
Onset time before transfusion start
"Reaction onset time cannot be before transfusion start."
Error
Actions / Buttons
Action
Description
Permissions
Save Draft
Saves partial investigation
Technologist
Finalize Investigation
Locks record and updates patient reaction history
Senior Technologist, Medical Director
Generate MOH Report
Generates structured report for MOH portal
Medical Director
Print Summary
Prints investigation summary
Technologist, Physician
Accessibility
Symptom checklist implemented as checkboxes with clear labels.
Serious reaction alerts announced via aria-live="assertive".
Responsive / Mobile
Single-column layout; collapsible sections for Symptoms, Labs, Classification.
SCR-BLOODBANK-008: Blood Bank Dashboard
Purpose
Real-time dashboard for supervisors and medical directors to monitor inventory levels, expiries, transfusion volume, reaction rates, donor statistics, and key KPIs (e.g., C:T ratio, wastage rate).
Field Specifications
Field / Widget
Type
Required
Validation
Default
Notes
Date Range Filter
Date range picker
No
From ≤ To
Last 7 days
Applies to KPIs and charts
Facility Filter
Dropdown
No
From facilities
All
Inventory Levels Widget
Bar/tiles
Yes
—
—
Units on hand by component and ABO/Rh
Expiry Alerts Widget
List
Yes
—
—
Units expiring in next N days
Transfusion Volume Chart
Line/bar chart
Yes
—
—
Daily/weekly transfusions
Reaction Rate Widget
Gauge
Yes
—
—
Transfusion Reaction Rate KPI
Donor Statistics Widget
Tiles
Yes
—
—
Total donors, new donors, deferral rate
Crossmatch-to-Transfusion Ratio
Gauge
Yes
—
—
KPI vs target ≤2.0
Wastage Rate Widget
Gauge
Yes
—
—
RBC/platelet wastage vs targets
Actions / Buttons
Action
Description
Refresh
Reloads dashboard data
Export
Exports KPI data to CSV/PDF
Drill-down
Clicking a widget opens detailed report screen (outside scope)
Accessibility
Charts provide data tables as alternative views.
Colour-coded gauges include numeric values and textual status (e.g., "On target", "Above target").
Responsive / Mobile
Widgets stack vertically; charts simplified for small screens.
Tap on widget opens full-screen detail.
Common UI Patterns
Patient Banner (Clinical Screens)
Appears on SCR-BLOODBANK-003, 005, 006, 007, 008 when patient context exists.
Content: Patient name (EN + optional AR), MRN, age, sex, location, primary physician, allergies, blood group, transfusion/reaction icons.
Behaviour:
Clickable to open mini patient summary.
High-contrast text; icons with tooltips and text labels.
Implementation:
Reusable component shared with other clinical modules (../ehr-patient-mgmt).
Donor Banner
Appears on SCR-BLOODBANK-001, 002.
Content: Donor name, Emirates ID, donor ID, last donation date, total donations, deferral status.
Deferral status colour-coded with text (e.g., "Temporarily deferred until 2026-03-01").
Search Components
Standard search bar with:
Placeholder text in English/Arabic (e.g., "Search donor / ابحث عن المتبرع").
Debounced search (300–500 ms).
Minimum characters (2–3) before querying.
Results displayed in tables with sortable columns and pagination.
Alert / Notification Patterns
Severity levels:
Info (blue), Warning (amber), Error (red), Success (green).
Display:
Inline messages near fields.
Global banner at top for form-level issues.
Modal dialogs for critical blocking alerts (e.g., patient-product mismatch).
All alerts:
Include icon + text.
Announced via aria-live regions for screen readers.
Loading States
Skeleton loaders for tables and worklists.
Spinners with text "Loading inventory…" or "Saving transfusion record…".
Avoid blocking entire UI where possible; show per-panel loading.
Arabic/English Bilingual UI
All labels, buttons, and messages support English and Arabic translations.
Layout considerations:
For Arabic UI, main direction dir="rtl"; tables remain LTR for numeric IDs where appropriate.
Donor and patient names can display both scripts (e.g., "Ahmed Al-Maktoum / أحمد المكتوم").
Input:
Arabic name fields explicitly set dir="rtl".
Regulatory text (consent, MOH references) available in both languages.
Accessibility & PDPL Considerations
WCAG 2.1 AA:
Contrast ratio ≥ 4.5:1 for text.
Keyboard-only navigation supported across all screens.
Focus indicators visible.
Forms use proper landmarks (<main>, <header>, <nav>).
UAE PDPL:
Consent checkboxes with clear explanation of data use (donor data, transfusion records).
Links to privacy notice.
Minimal necessary data displayed on shared screens; sensitive data (e.g., infectious status) restricted to authorized roles and not shown on general dashboards.
Responsive / Mobile General
All screens designed mobile-first for key bedside and donor-drive workflows (SCR-BLOODBANK-001, 002, 006).