Blood Bank Management Workflows
This document defines seven core workflows for the Blood Bank Management (blood-bank) module. Each workflow includes process steps, decision points, integration hooks, exception handling, and the paperless transformation achieved by the HIS.
Regulatory context (UAE): UAE MOH blood safety regulations (donor selection, infectious disease screening, traceability), DOH/DHA facility licensing, NABIDH (Dubai) and Malaffi (Abu Dhabi) HIE connectivity for transfusion history, UAE PDPL (Federal Decree-Law No. 45/2021) for donor/patient data protection, and ADHICS/DHA security standards for clinical systems. All workflows must support full traceability from donor to recipient and hemovigilance reporting to UAE MOH.
WF-BB-001: Donor Registration & Screening
Process Flow
Actor: Blood Bank Technologist, Donor Physician
Trigger: Voluntary donor presents or blood drive event
Pre-conditions:
- Donor identity document available (Emirates ID or passport)
- Donor consent policy and MOH eligibility criteria configured in master data
- Donor Physician available (on-site or teleconsult) for approval/deferral
- Technologist opens Donor Registration & Screening (SCR-BB-001) and searches existing donors by Emirates ID, name, or phone.
- System checks
blood_donorsfor existing record: - If found, loads demographics, historical blood type, and deferral history. - If not found, opens new donor registration form. - Technologist verifies identity (Emirates ID barcode scan where available) and captures/updates: - Emirates ID, name (Arabic/English), DOB, gender - Contact details, address, preferred communication language.
- System checks for active deferral in
blood_donors: - Ifdonor_status = 'Deferred'anddeferral_until > today, system displays hard-stop warning and routes to Donor Physician for review. - Technologist administers electronic screening questionnaire: - Travel history, high-risk behaviours, medications, medical conditions, prior transfusions, pregnancy history (for females), prior deferrals. - System auto-scores risk based on MOH-configured Donor Deferral Reasons master data.
- Technologist records baseline vitals and measurements: - BP, pulse, temperature, weight, hemoglobin; stored in structured fields or JSON.
- System evaluates eligibility rules:
- If any permanent deferral criteria met → propose
donor_status = 'Permanently Deferred'. - If temporary deferral criteria met → proposedonor_status = 'Temporarily Deferred'withdeferral_reasonanddeferral_until. - If no deferral criteria → proposedonor_status = 'Eligible'. - Donor Physician reviews questionnaire, vitals, and system proposal: - Confirms eligibility or modifies to temporary/permanent deferral with reason.
- Technologist records informed consent electronically (per UAE PDPL): - Donor signs on tablet; consent version, timestamp, and user captured.
- If eligible:
- System assigns new
donation_idplaceholder and prints barcoded donation labels (bag + pilot tubes) linked todonor_id. - Schedules donor for phlebotomy (immediate or future slot) and records planned collection site.
- System assigns new
- If temporarily or permanently deferred:
- System updates
blood_donorswithdonor_status,deferral_reason,deferral_until(if applicable), and increments deferral counters for KPIs.
- System updates
- System logs all actions in an audit trail (user, timestamp, changes) for regulatory compliance.
Data Modified:
blood_donors— INSERT (new donor) or UPDATE (demographics, status, deferral fields, last_donation_date, total_donations not yet changed here)encounters(if donor is also patient and visit is registered) — referenced only, no ownership- Donor screening responses (implementation options):
- Either a dedicated
donor_screeningtable — INSERT - Or JSON field in
blood_donors(noted in data model) - Consent/audit:
consent_records(owned by another module or shared) — INSERTaudit_log— INSERT
Mermaid Flowchart
Decision Points
- Existing donor? - If yes → pre-populate data, check deferrals. - If no → create new donor record.
- Active deferral?
- If yes → hard-stop for donation; Donor Physician may:
- Confirm deferral (no donation).
- Override with justification (e.g., deferral period completed but not updated).
- Eligibility classification (system proposal vs physician decision):
- If permanent deferral criteria met → propose permanent deferral; physician may confirm or downgrade to temporary with justification.
- If temporary deferral criteria met → propose temporary deferral; physician sets
deferral_until. - If no criteria → eligible; physician may still defer based on clinical judgment.
Integration Points
- EHR Patient Management (
ehr-patient-mgmt): - If donor is also a patient, optional link to
patients.patient_idfor shared demographics and PDPL consent alignment. - Scheduling module:
- For planned donation appointments (blood drives, future slots).
- Notification/Communication module:
- SMS/email reminders for future donation appointments or deferral expiry (subject to PDPL consent).
Exception Handling
- Identity mismatch (Emirates ID already linked to another donor):
- System blocks registration and prompts technologist to verify documents; escalates to supervisor for merge/cleanup.
- Incomplete questionnaire or missing vitals:
- System prevents eligibility decision until mandatory fields completed.
- System downtime during consent capture:
- Local offline capture (if supported) or temporary paper consent with later scanning and back-entry; flagged in audit log.
- Donor Physician not immediately available:
- System allows provisional status "Pending Physician Review"; donation cannot proceed until final decision recorded.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Handwritten donor registration forms | Structured donor registration in blood_donors with Emirates ID validation |
Reduces duplicate donors and identity errors |
| Paper screening questionnaires | Electronic questionnaire with auto-scoring and rule-based eligibility | Ensures consistent application of MOH criteria |
| Manual deferral logbooks | Deferral status and reasons stored in donor record with effective dates | Enables automated deferral checks and KPIs |
| Wet-ink consent forms | Tablet-based e-consent linked to donor and donation | Easier retrieval for audits; PDPL-compliant consent tracking |
Remaining Paper Touchpoints: Optional printed donor information leaflets (non-identifiable); can be replaced by digital brochures/portal.
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
| Donor identity document | Emirates ID or passport (barcode scan or manual entry) | Device scan / manual entry |
blood_donors |
Existing donor record, deferral history, blood type, total donations | SQL query |
| Technologist input | Demographics, questionnaire responses, vitals, measurements | UI form input |
| MOH Donor Deferral Reasons (master data) | Eligibility criteria and deferral rules | Configuration lookup |
| Donor Physician | Final eligibility decision (eligible, temporary deferral, permanent deferral) | UI approval action |
| Donor | Informed consent (electronic signature on tablet) | Signature capture |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
blood_donors |
New or updated donor record (demographics, status, deferral fields) | SQL INSERT / UPDATE |
donor_screening (or JSON in blood_donors) |
Questionnaire responses and vitals | SQL INSERT |
| Consent records | Informed consent with version, timestamp, and signature | SQL INSERT + file storage |
| Donation labels | Barcoded bag and pilot tube labels linked to donor_id |
Label printer output |
audit_log |
Registration, screening, and eligibility decision events | SQL INSERT |
| Notification service | Donation appointment reminder or deferral notification (if PDPL consent) | SMS / email |
Post-conditions:
- Donor record exists with current demographics, screening data, and eligibility status
- If eligible: donation labels generated and phlebotomy scheduled
- If deferred: donor status and reason recorded; deferral counters updated for KPIs
- Informed consent captured and linked to donor record
- Full audit trail for regulatory compliance
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Donor search and identity verification | < 2 minutes | None — staff-driven | Application log |
| Questionnaire administration (electronic) | < 10 minutes | None — donor-driven | donor_screening.completed_at |
| System eligibility auto-scoring | < 3 seconds | Performance alert if > 10s | Application performance monitoring |
| Donor Physician review and decision | < 15 minutes | Alert Donor Physician if queue > 3 donors waiting | audit_log timestamps |
| Consent capture and label generation | < 5 minutes | None — staff-driven | blood_donors.updated_at |
| Total registration-to-phlebotomy-ready | < 30 minutes | Alert Blood Bank Supervisor if > 45 min | End-to-end workflow metric |
Note: Donor registration and screening is a linear assessment workflow that results in an eligibility classification. No separate entity lifecycle or state diagram is required.
WF-BB-002: Blood Collection & Component Processing
Process Flow
Actor: Blood Bank Technologist
Trigger: Donor approved for collection (WF-BB-001 completed with status Eligible)
Pre-conditions:
- Donor marked
donor_status = 'Eligible'and not actively deferred - Donation labels (bag + pilot tubes) generated and linked to
donor_id - Collection site and phlebotomist assigned
- Technologist opens Blood Collection & Processing (SCR-BB-002) and selects scheduled donor or scans donation label barcode.
- System verifies:
-
donor_idexists anddonor_status = 'Eligible'. - No recent donation violating minimum interval rules (e.g., <56 days for whole blood, configurable). - Technologist confirms collection site, phlebotomist (
collector_id), and starts venipuncture: - Recordscollection_start_datetime. - After collection, technologist records:
-
collection_end_datetime,volume_ml, any immediate complications (e.g., vasovagal). - System createsblood_donationsrow withstatus = 'Collected'. - Technologist collects pilot tubes for:
- ABO/Rh confirmation, infectious disease panel (HBV, HCV, HIV, syphilis, malaria per MOH), other facility-defined tests.
- Tubes are barcoded and linked to
donation_id. - System generates component processing plan based on donation type: - Whole blood → RBCs, platelets, FFP, cryoprecipitate. - Apheresis → specific component(s).
- Technologist processes components (centrifugation, separation) and records:
-
component_type,volume_ml,collection_datetime,expiry_datetime, ABO/Rh, special processing (irradiated, leukoreduced, washed). - System createsblood_componentsrows withstatus = 'Quarantined'. - System sends pilot tube orders to LIS (INT-BB-002):
- Infectious disease panel, confirmatory ABO/Rh.
- Each test linked to
donation_idandcomponent_idwhere relevant. - All components remain in quarantine:
-
blood_quarantine_logentry created withquarantine_reason = 'Pending Infectious Disease Results'. - When LIS returns results:
- If all infectious markers negative and ABO/Rh confirmed:
- System updates
blood_components.status = 'Available'. - Creates/updates
blood_component_inventoryentries with storage location,received_datetime. - Closes quarantine log (
released_datetime,release_reason = 'Cleared'). - If any marker positive or critical issue:
- System sets
blood_components.status = 'Rejected'. - Updates
blood_quarantine_log.final_disposition = 'Discard'. - Creates
blood_discard_logentries withdiscard_reason = 'Infectious Positive'. - Triggers donor notification workflow (outside this module’s scope but logged).
- System updates donor record:
- Increments
total_donations, setslast_donation_date, and updatesblood_type/ABO/Rh if confirmed.
- Increments
Data Modified:
blood_donations— INSERT (new donation) and UPDATE (status, complications, infectious_disease_status)blood_components— INSERT (per component) and UPDATE (status, expiry, special processing flags)blood_component_inventory— INSERT (when components released) and UPDATE (status/location)blood_quarantine_log— INSERT (quarantine) and UPDATE (release/disposition)blood_discard_log— INSERT (for discarded units)blood_donors— UPDATE (total_donations, last_donation_date, blood_type/ABO/Rh)- LIS-related tables (in LIS module) — referenced via INT-BB-002
Mermaid Flowchart
Decision Points
- Eligibility & donation interval check: - If donor not eligible or interval too short → collection blocked; Donor Physician review required.
- Infectious disease results: - If all negative and ABO/Rh confirmed → components released to inventory. - If any positive or inconclusive → components rejected and discarded; donor flagged for follow-up/deferral.
- Component processing completeness: - If processing not completed within defined time window (e.g., 8 hours) → system alerts and may require supervisor override to proceed or discard.
Integration Points
- LIS (
lis) — INT-BB-002: - Outbound: specimen and test orders (infectious panel, ABO/Rh confirmation).
- Inbound: test results (marker status, confirmatory blood group).
- EHR Patient Management:
- If donor is also patient, optional update of patient blood type (subject to policy).
- Inventory Management (internal):
blood_component_inventoryupdates drive dashboard KPIs and alerts.
Exception Handling
- Barcode scan failure / label unreadable:
- Manual entry with double verification; system flags record for audit.
- Partial test results from LIS:
- Components remain quarantined until all mandatory tests completed.
- Result mismatch (ABO/Rh discrepancy with previous donation):
- System flags discrepancy; components held in quarantine; supervisor review required.
- System or network outage during collection:
- Minimal offline capture (donor ID, time, volume) with later reconciliation; all late entries marked accordingly.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Paper collection worksheets | Real-time electronic blood_donations records with timestamps |
Improves traceability and KPI accuracy |
| Handwritten component labels | Barcode-printed ISBT-compliant labels linked to blood_components |
Reduces mislabeling and improves scanning |
| Manual quarantine logbooks | blood_quarantine_log with automated status changes |
Ensures no unit leaves quarantine prematurely |
| Paper infectious disease result printouts | HL7 ORU integration with LIS and automated status updates | Eliminates manual transcription errors |
Remaining Paper Touchpoints: Biohazard disposal manifests (may remain partially paper due to external waste contractor requirements).
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
blood_donors |
Donor record with donor_status = 'Eligible', blood type history |
SQL query |
| Donation label barcode | donation_id and donor_id linkage |
Barcode scan |
| Technologist input | Collection start/end times, volume, complications, phlebotomist | UI form input |
| Component processing plan | Donation type → component types (RBCs, platelets, FFP, cryoprecipitate) | Configuration / master data |
| LIS (INT-BB-002) | Infectious disease panel results, confirmatory ABO/Rh | HL7 ORU / Internal API |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
blood_donations |
Donation record (status, volume, complications, infectious_disease_status) | SQL INSERT / UPDATE |
blood_components |
Component records per unit (type, volume, ABO/Rh, expiry, special processing, status) | SQL INSERT / UPDATE |
blood_component_inventory |
Inventory entries when components released from quarantine | SQL INSERT / UPDATE |
blood_quarantine_log |
Quarantine and release/disposition records | SQL INSERT / UPDATE |
blood_discard_log |
Discard entries for rejected components | SQL INSERT |
blood_donors |
Updated total_donations, last_donation_date, blood_type/ABO/Rh | SQL UPDATE |
| LIS (INT-BB-002) | Specimen and test orders (infectious panel, ABO/Rh confirmation) | HL7 ORM / Internal API |
Post-conditions:
- Donation record created with collection details and linked components
- Components quarantined pending infectious disease screening results
- When results received: components either released to available inventory or rejected and discarded
- Donor record updated with donation count and confirmed blood type
- Full traceability chain from donor to component to inventory
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Donor verification and collection start | < 5 minutes | None — staff-driven | blood_donations.collection_start_datetime |
| Blood collection (phlebotomy) | 8–15 minutes (whole blood) | Alert if > 20 min (possible complication) | blood_donations start/end times |
| Component processing (centrifugation, separation) | < 8 hours from collection | Alert supervisor if approaching 8h limit | blood_components.created_at |
| Pilot tube order to LIS | < 5 minutes after collection | Alert IT if > 30 min | integration_message_log.sent_at |
| Infectious disease results from LIS | < 24 hours | Alert Blood Bank Supervisor at 24h; escalate to Lab Director at 48h | blood_quarantine_log.released_datetime |
| Quarantine release (after clear results) | < 1 hour from result receipt | Alert if not released within 2h | blood_quarantine_log.released_datetime |
State Transition Diagram
WF-BB-003: Type and Screen (Pre-Transfusion Testing)
Process Flow
Actor: Blood Bank Technologist
Trigger: Type & Screen order received from CPOE (INT-BB-001)
Pre-conditions:
- Valid transfusion-related order in CPOE (type & screen or transfusion order requiring pre-testing)
- Patient identified with active encounter
- Properly labeled blood specimen received in blood bank
- Technologist opens Type & Screen / Crossmatch Workbench (SCR-BB-003) and selects the patient/order from the worklist.
- System verifies specimen:
- Scans specimen barcode and matches to
patient_id,encounter_id, collection time, and collector. - Confirms two identifiers (e.g., name, MRN) match EHR. - If specimen verification fails (mismatch or missing identifiers): - System rejects specimen, records reason, and notifies clinical area to recollect.
- If verification passes, technologist performs ABO/Rh typing: - Records forward and reverse grouping results, Rh D status, and any weak D testing.
- Technologist performs antibody screen (indirect antiglobulin test):
- Records
antibody_screen_result(Negative/Positive). - If antibody screen positive:
- Performs antibody identification panel.
- Records
antibody_specificity(e.g., anti-K, anti-E) using master data codes. - System compares new ABO/Rh with historical
blood_type_screenrecords: - If concordant → setshistorical_type_concordant = true. - If discrepant → flags for investigation; crossmatch and transfusion blocked until resolved. - System calculates validity window:
- Default 72 hours from specimen collection (configurable).
- Sets
valid_untilinblood_type_screen. - Technologist reviews and validates results; supervisor co-sign may be required for complex antibodies.
- System:
- Inserts new
blood_type_screenrecord. - Updates patient summary (via EHR integration) with current blood type, antibody status, and validity.
- Notifies ordering provider via CPOE/EHR that type & screen is complete.
- Inserts new
Data Modified:
blood_type_screen— INSERT (new result)crossmatch_records— not yet; used in WF-BB-004transfusion_orders— UPDATE (may set status to "Ready for Crossmatch" or similar)- EHR patient summary tables — UPDATE (via integration, not owned here)
audit_log— INSERT
Mermaid Flowchart
Decision Points
- Specimen & patient match: - If mismatch → specimen rejected; new sample required. - If match → proceed with testing.
- Antibody screen result: - Negative → standard crossmatch or electronic crossmatch possible. - Positive → antibody identification required; may limit compatible units.
- Historical type concordance: - Concordant → normal workflow. - Discrepant → investigation required; crossmatch blocked until resolved.
Integration Points
- CPOE (
cpoe) — INT-BB-001: - Inbound: Type & Screen orders (HL7 ORM / internal API).
- Outbound: Result status and completion notification.
- LIS (
lis): - Optionally, if ABO/Rh and antibody screen performed in LIS, results imported via HL7 ORU and mapped into
blood_type_screen. - EHR Patient Chart — INT-BB-003:
- Outbound: Blood type, antibody status, and transfusion history to patient summary (FHIR Procedure/Observation).
Exception Handling
- Specimen labeling errors:
- System enforces rejection rules; reason recorded; PDPL-compliant notification without exposing other patients’ data.
- Inconclusive antibody identification:
- System allows interim classification (e.g., "Antibody of Undetermined Specificity") and requires pathologist review.
- System downtime:
- Results may be recorded on contingency forms and later back-entered; all back-dated entries flagged for audit.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Paper blood typing worksheets | Electronic blood_type_screen records with structured fields |
Enables analytics and automated validity checks |
| Manual antibody screen notes | Structured antibody screen and specificity coding | Supports complex matching and alerts |
| Handwritten compatibility cards | Digital blood type summary in EHR and blood bank | Accessible across NABIDH/Malaffi-connected facilities |
| Manual log of specimen rejections | Electronic rejection reasons linked to orders | Improves quality monitoring and training feedback |
Remaining Paper Touchpoints: None — fully digital once specimen is labeled and received.
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
| CPOE (INT-BB-001) | Type & Screen order with patient, encounter, priority | HL7 ORM / Internal API |
| Blood specimen | Barcoded patient specimen with two-identifier match | Barcode scan + EHR verification |
blood_type_screen |
Historical blood type and antibody records for concordance check | SQL query |
| Technologist input | ABO/Rh forward/reverse grouping, antibody screen result, antibody specificity | UI form input |
| Supervisor (if required) | Co-signature for complex antibody identification | UI approval action |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
blood_type_screen |
New type and screen record (ABO/Rh, antibody status, validity window) | SQL INSERT |
transfusion_orders |
Status updated to "Ready for Crossmatch" | SQL UPDATE |
| EHR Patient Chart (INT-BB-003) | Blood type, antibody status, transfusion history | FHIR Observation / Internal API |
| CPOE (INT-BB-001) | Type & Screen completion notification | HL7 result / Internal API |
audit_log |
Testing actions and results | SQL INSERT |
Post-conditions:
- Patient blood type and antibody status recorded with validity window (default 72 hours)
- Historical type concordance verified; discrepancies flagged and investigated
- Ordering provider notified of completion
- Patient chart updated with current blood bank status
- Ready for crossmatch if transfusion order exists
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Specimen receipt and verification | < 10 minutes from arrival in blood bank | Alert if specimen > 30 min without processing | Specimen tracking log |
| ABO/Rh typing (routine) | < 30 minutes | None — bench time | blood_type_screen.performed_datetime |
| Antibody screen (routine, negative) | < 45 minutes | None — bench time | blood_type_screen.performed_datetime |
| Antibody identification (positive screen) | < 4 hours | Alert Blood Bank Supervisor at 4h | blood_type_screen.antibody_id_completed_at |
| Total Type & Screen TAT (routine) | < 1 hour (specimen receipt to result) | Alert Blood Bank Supervisor at 1h | blood_type_screen.resulted_datetime |
| Total Type & Screen TAT (urgent/STAT) | < 30 minutes | Alert Blood Bank Supervisor at 30 min | blood_type_screen.resulted_datetime |
| Result notification to ordering provider | < 5 minutes after result validation | Alert IT if > 15 min | integration_message_log.sent_at |
Note: Type and Screen is a linear laboratory testing workflow. No separate entity lifecycle or state diagram is required; the
blood_type_screenrecord progresses from creation to validation to notification.
WF-BB-004: Crossmatch & Component Issue
Process Flow
Actor: Blood Bank Technologist
Trigger: Transfusion order received and type/screen complete
Pre-conditions:
- Valid
transfusion_ordersrecord withorder_statusindicating ready for crossmatch - Recent valid
blood_type_screen(within configured validity window) - Available compatible components in
blood_component_inventory
- Technologist opens Type & Screen / Crossmatch Workbench (SCR-BB-003) or Blood Issue & Return (SCR-BB-005) and selects the transfusion order.
- System verifies:
-
blood_type_screen.valid_until >= now. - No unresolved blood group discrepancy or serious transfusion reaction that would block transfusion. - System suggests compatible units from
blood_component_inventory: - Filters bycomponent_type_requested, ABO/Rh compatibility, antigen-negative requirements (based onantibody_specificity), and FEFO (earliest expiry first). - Technologist selects unit(s) for crossmatch.
- System determines crossmatch type: - If patient has two concordant historical types, negative antibody screen, and no significant history → eligible for electronic crossmatch. - Otherwise → serological crossmatch required.
- For electronic crossmatch:
- System performs rule-based checks (ABO/Rh compatibility, unit status, no conflicting antibodies).
- If all checks pass → creates
crossmatch_recordswithcrossmatch_type = 'Electronic',result = 'Compatible'. - For serological crossmatch:
- Technologist performs lab crossmatch (e.g., IAT crossmatch) and records
result(Compatible/Incompatible) andperformed_datetime. - If any unit is incompatible:
- System marks
crossmatch_records.result = 'Incompatible'and prevents issue of that unit; technologist selects alternative unit. - Once compatible units confirmed:
- System prints crossmatch/issue tag with patient identifiers, unit number, ABO/Rh, expiry, and special requirements.
- Updates
blood_component_inventory.status = 'Issued', setsissued_datetime,issued_to_patient_id, and destination location. - Technologist records pickup details:
- Person collecting (nurse ID), time, clinical area.
- System starts timer for return monitoring:
- If unit not started within defined time (e.g., 30 minutes) and returned, system evaluates temperature and visual inspection before re-inventory.
- If unit returned unused and acceptable:
blood_component_inventory.statusupdated back toAvailable,returned_datetimerecorded.- If unacceptable (e.g., out of temperature range) →
status = 'Discarded'andblood_discard_logentry created.
Data Modified:
crossmatch_records— INSERT (per unit crossmatched)blood_component_inventory— UPDATE (status, issued/returned timestamps, issued_to_patient_id)transfusion_orders— UPDATE (order_status, e.g., "Crossmatched", "Partially Filled")blood_discard_log— INSERT (for discarded units)audit_log— INSERT
Mermaid Flowchart
Decision Points
- Valid type & screen and no blocks: - If invalid or blocked → crossmatch cannot proceed; physician and blood bank medical director notified.
- Electronic vs serological crossmatch eligibility: - Based on configured Crossmatch Eligibility Rules (master data).
- Compatibility result: - Incompatible units cannot be issued; alternative units must be selected.
Integration Points
- CPOE (
cpoe) — INT-BB-001: - Inbound: transfusion orders with component type, units, priority.
- Outbound: order status updates (crossmatched, issued).
- Scheduling (
scheduling): - Patient location and encounter details for issue destination.
- EHR Patient Chart — INT-BB-003:
- Outbound: crossmatch results and units issued (for transfusion history).
Exception Handling
- No compatible units available:
- System alerts technologist and supervisor; may trigger emergency release protocol (outside this workflow) or external supplier request (WF-BB-007).
- Electronic crossmatch rule failure:
- System automatically falls back to serological crossmatch.
- Unit not returned within expected time:
- System generates alert to ward and blood bank; may require investigation.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Paper crossmatch worksheets | crossmatch_records with full electronic audit |
Supports traceability and KPIs (Crossmatch TAT, C:T ratio) |
| Manual compatibility cards | Printed tags generated from system data | Reduces transcription errors |
| Paper issue/return logs | blood_component_inventory with issue/return timestamps |
Enables automated unreturned-unit alerts |
| Manual FEFO tracking | System-sorted inventory by expiry | Minimizes wastage and expired units |
Remaining Paper Touchpoints: Physical tags attached to units (printed from system) remain necessary for bedside verification but are generated digitally.
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
transfusion_orders |
Transfusion order with component type, units requested, priority | SQL query (from CPOE via INT-BB-001) |
blood_type_screen |
Valid type and screen (within validity window), antibody status | SQL query |
blood_component_inventory |
Available compatible units sorted by FEFO | SQL query |
| Crossmatch Eligibility Rules (master data) | Electronic vs serological crossmatch criteria | Configuration lookup |
| Technologist input | Serological crossmatch result (Compatible / Incompatible), unit selection | UI form input |
| Pickup details | Collecting nurse ID, time, clinical area | UI form input |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
crossmatch_records |
Crossmatch record (type, result, performed_datetime, unit, patient) | SQL INSERT |
blood_component_inventory |
Status updated to Issued or back to Available (if returned acceptable) or Discarded |
SQL UPDATE |
transfusion_orders |
Status updated (Crossmatched, Partially Filled, Issued) | SQL UPDATE |
| Crossmatch/issue tag | Printed tag with patient IDs, unit number, ABO/Rh, expiry, special requirements | Label printer output |
blood_discard_log |
Discard entry for returned-unacceptable units | SQL INSERT |
| CPOE (INT-BB-001) | Order status update (crossmatched, issued) | HL7 / Internal API |
| EHR Patient Chart (INT-BB-003) | Crossmatch results and units issued for transfusion history | FHIR / Internal API |
audit_log |
Crossmatch, issue, return, and discard actions | SQL INSERT |
Post-conditions:
- Crossmatch result recorded for each unit tested
- Compatible units issued with printed tags and pickup details
- Inventory updated; unreturned-unit timer active
- Ordering provider and EHR updated with crossmatch results
- Incompatible units flagged and alternative units selected
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Compatible unit search and selection | < 5 minutes | Alert if no compatible units (trigger emergency protocol) | Application log |
| Electronic crossmatch (automated) | < 1 minute | Performance alert if > 5 min | crossmatch_records.performed_datetime |
| Serological crossmatch (manual) | < 45 minutes (routine) | Alert Blood Bank Supervisor at 45 min | crossmatch_records.performed_datetime |
| Serological crossmatch (urgent/STAT) | < 15 minutes | Alert at 15 min; escalate to Blood Bank MD | crossmatch_records.performed_datetime |
| Issue tag printing and unit handoff | < 5 minutes after compatible crossmatch | None — staff-driven | blood_component_inventory.issued_datetime |
| Unreturned unit alert | 30 minutes after issue (configurable) | Alert ward nurse and blood bank | Timer from issued_datetime |
| Crossmatch-to-Transfusion (C:T) ratio | Target < 2.0:1 | Dashboard KPI; review with Blood Bank Medical Director | Calculated from crossmatch and transfusion counts |
State Transition Diagram
WF-BB-005: Transfusion Administration
Process Flow
Actor: Nurse (Transfusion), Ordering Physician (for reaction management)
Trigger: Crossmatched unit issued to clinical area (WF-BB-004)
Pre-conditions:
- Unit issued in
blood_component_inventorywith statusIssued - Valid transfusion order in EHR
- Patient present with identification band
- Nurse opens Transfusion Administration (SCR-BB-006) on bedside device and selects patient or scans wristband barcode.
- System loads active transfusion orders and issued units for that patient.
- Two nurses perform bedside verification: - Scan patient wristband and unit barcode. - System verifies: patient identifiers, ABO/Rh compatibility, unit number, expiry, special requirements.
- If verification fails: - System displays hard-stop alert; transfusion cannot start; nurse must contact blood bank.
- If verification passes: - Nurse records pre-transfusion vitals (temperature, pulse, BP, SpO2) and any pre-medications administered (via PIS/EHR integration).
- Nurse confirms start of transfusion:
- Records
start_datetimeand initial infusion rate. - System createstransfusion_administrationrecord withstatus = 'In Progress'. - System schedules monitoring prompts: - 15-minute check, then periodic checks as per protocol (e.g., hourly).
- At each prompt, nurse records vitals and symptoms (e.g., chills, rash, dyspnea).
- If nurse observes potential reaction:
- Activates reaction alert button; system flags
reaction_occurred = trueand suggests stopping transfusion and notifying physician (transition to WF-BB-006). - If transfusion completes without reaction:
- Nurse records
end_datetime, totalvolume_infused, and post-transfusion vitals. - System updates
transfusion_administration.status = 'Completed'.
- Nurse records
- Nurse returns completed tag/unit (if applicable) to blood bank; system records completion and may update inventory (e.g., for partial returns, if policy).
Data Modified:
transfusion_administration— INSERT (new administration) and UPDATE (status, times, vitals JSON, reaction flag)blood_component_inventory— UPDATE (may set final disposition or confirm completion)transfusion_orders— UPDATE (e.g., units administered count)audit_log— INSERT
Mermaid Flowchart
Decision Points
- Patient-unit match and compatibility: - If mismatch or incompatibility → transfusion blocked; blood bank contacted.
- Signs of reaction: - If present → transfusion stopped; reaction workflow initiated.
- Transfusion completion: - If not complete → continue monitoring. - If complete → finalize administration record.
Integration Points
- EHR Patient Chart:
- Vitals and transfusion administration summary visible in nursing flowsheets.
- CPOE/PIS:
- Pre-medication orders and administration may be linked.
- Blood Bank Module:
- Updates
blood_component_inventoryand transfusion history.
Exception Handling
- Device offline at bedside:
- Local caching of scans and vitals with later sync; system marks entries as offline-captured.
- Barcode unreadable:
- Manual entry with double-check by two nurses; system requires dual authentication.
- Patient moved to another location mid-transfusion:
- System updates location via scheduling/EHR; monitoring prompts continue.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Paper transfusion charts | transfusion_administration with structured fields |
Enables reaction rate KPIs and audit trails |
| Manual bedside checklists | Barcode-based verification and electronic checklist | Reduces wrong-patient/unit errors |
| Handwritten vital sign logs | Timed prompts and digital vitals capture | Ensures protocol adherence and completeness |
| Paper return slips | Electronic confirmation of completion/return | Improves reconciliation with blood bank inventory |
Remaining Paper Touchpoints: Physical unit tag may be returned to blood bank but is generated by the system.
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
blood_component_inventory |
Issued unit with status Issued, linked crossmatch record |
SQL query |
transfusion_orders |
Active transfusion order for patient | SQL query |
| Patient identification | Wristband barcode scan (two-identifier verification by two nurses) | Barcode scan |
| Unit identification | Unit barcode scan for patient-unit match | Barcode scan |
| Nurse input | Pre-transfusion vitals, start time, infusion rate, periodic vitals, symptoms | UI form input (bedside device) |
| PIS/EHR | Pre-medication administration status | Internal API |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
transfusion_administration |
Administration record (status, times, vitals, volume, reaction flag) | SQL INSERT / UPDATE |
blood_component_inventory |
Final disposition (completed, returned) | SQL UPDATE |
transfusion_orders |
Units administered count updated | SQL UPDATE |
| EHR Patient Chart | Transfusion administration summary in nursing flowsheets | Internal API |
| WF-BB-006 trigger (if reaction) | Reaction alert with administration context | Workflow event |
audit_log |
Verification, start, monitoring, and completion actions | SQL INSERT |
Post-conditions:
- Transfusion administration record complete with start/end times, volume, and vitals
- Bedside verification confirmed with two-nurse barcode checks
- Monitoring protocol followed with timed vital sign checks
- If reaction detected: transfusion stopped, reaction workflow triggered
- Inventory and order records reflect final disposition
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Bedside verification (two-nurse, barcode check) | < 5 minutes | None — nursing protocol | transfusion_administration.verification_datetime |
| Pre-transfusion vitals recording | < 5 minutes | None — nursing protocol | transfusion_administration vitals JSON |
| First 15-minute vital sign check | At 15 minutes after start | System prompt; alert Charge Nurse if not recorded by 20 min | transfusion_administration monitoring timestamps |
| Periodic monitoring (hourly or per protocol) | Per protocol interval | System prompt; alert if > 15 min late | Monitoring timestamps |
| Reaction recognition and response | Immediate upon detection | System alert to physician + blood bank | transfusion_administration.reaction_occurred timestamp |
| Post-transfusion vitals and completion | < 15 minutes after infusion ends | Alert if not completed within 30 min | transfusion_administration.end_datetime |
| Total transfusion duration (RBCs, typical) | 1–4 hours per unit | Alert if > 4 hours (risk of bacterial contamination) | Start to end timestamps |
State Transition Diagram
WF-BB-006: Transfusion Reaction Investigation
Process Flow
Actor: Blood Bank Technologist, Physician, Nurse
Trigger: Suspected transfusion reaction reported (from WF-BB-005)
Pre-conditions:
- Active or recently completed transfusion administration record
- Unit and tubing available for return to blood bank
- Reaction signs/symptoms documented by nursing
- Nurse stops transfusion immediately and maintains IV access with saline (per protocol).
- Nurse opens Transfusion Reaction Investigation (SCR-BB-007) from the patient’s transfusion record and documents: - Onset time, signs/symptoms (fever, chills, rash, dyspnea, hypotension, etc.).
- Nurse returns the blood product and tubing to the blood bank; system records return time and links to
component_id. - Physician evaluates patient, orders post-reaction labs (DAT, free hemoglobin, repeat ABO/Rh, renal function, etc.) via CPOE; LIS integration handles results.
- Blood Bank Technologist reviews the case in SCR-BB-007: - Confirms clerical checks (patient ID, unit number, compatibility). - Performs visual inspection for hemolysis, checks storage and transport conditions.
- Technologist performs DAT and other required tests; records
dat_result,hemolysis_check, and other findings. - Blood bank team (technologist + physician/pathologist) classifies reaction:
- Using Transfusion Reaction Types master data (e.g., febrile non-hemolytic, allergic, acute hemolytic, TRALI, TACO).
- Assigns
severityandclassification. - System creates
transfusion_reactionsrecord linked toadmin_id,patient_id,component_id. - If reaction is serious (as per MOH hemovigilance criteria):
- System flags
reported_to_moh = falseand prompts Blood Bank Medical Director to complete MOH hemovigilance report. - Medical Director reviews investigation, approves classification, and records regulatory reporting details (date, reference number).
- System updates
transfusion_reactions.reported_to_moh = trueonce submitted and stores reference. - Patient record updated with reaction history; future transfusion orders trigger alerts referencing this reaction.
Data Modified:
transfusion_administration— UPDATE (reaction_occurred, status if stopped early)transfusion_reactions— INSERT (new reaction record)blood_quarantine_log— INSERT (if unit quarantined pending investigation)blood_components/blood_component_inventory— UPDATE (status if unit discarded)blood_discard_log— INSERT (if unit discarded due to reaction)audit_log— INSERT
Mermaid Flowchart
Decision Points
- Serious vs non-serious reaction: - Based on MOH/ISBT hemovigilance criteria; serious reactions require MOH reporting.
- Unit disposition:
- If investigation suggests product-related cause → unit discarded;
blood_discard_logupdated. - Future transfusion precautions: - System may enforce special requirements (e.g., washed cells, pre-medication) based on reaction type.
Integration Points
- CPOE/LIS:
- Post-reaction lab orders and results.
- MOH Hemovigilance Portal — INT-BB-005:
- Outbound: serious reaction reports (event-driven and summary).
- EHR Patient Chart:
- Reaction history and alerts for future transfusions.
Exception Handling
- Incomplete data (unit not returned):
- System records limitation in
investigation_findings; classification may be "Possible" rather than "Definite". - Delayed reaction recognition:
- Workflow can be initiated after completion; system links to relevant administration by time and unit.
- MOH portal downtime:
- System queues report for later submission and tracks pending status.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Paper transfusion reaction forms | transfusion_reactions with structured fields and links to administration |
Facilitates hemovigilance KPIs and audits |
| Manual MOH reporting forms | In-system report generation and status tracking | Reduces missed or late reports |
| Handwritten investigation notes | Structured investigation fields (DAT, hemolysis, clerical check) | Supports root-cause analysis and quality improvement |
| Separate reaction logbooks | Centralized electronic registry | Enables trend analysis and committee review |
Remaining Paper Touchpoints: MOH may still require printed or PDF-signed forms; system should generate these from digital data.
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
transfusion_administration |
Active or recently completed transfusion record (reaction_occurred = true) | SQL query / workflow event |
| Nurse input | Onset time, signs/symptoms (fever, chills, rash, dyspnea, hypotension) | UI form input |
| Returned blood product and tubing | Physical return linked to component_id |
Barcode scan / manual entry |
| CPOE/LIS | Post-reaction lab orders and results (DAT, free hemoglobin, repeat ABO/Rh, renal function) | HL7 ORM/ORU / Internal API |
| Technologist input | Clerical check results, visual inspection, DAT result, hemolysis check | UI form input |
| Transfusion Reaction Types (master data) | Reaction classification codes and severity levels | Configuration lookup |
| Blood Bank Medical Director | Investigation review, classification approval, MOH reporting | UI approval action |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
transfusion_reactions |
Reaction record (classification, severity, investigation findings, MOH reporting status) | SQL INSERT |
transfusion_administration |
Updated with reaction_occurred, stopped early status | SQL UPDATE |
blood_quarantine_log |
Quarantine entry if unit held pending investigation | SQL INSERT |
blood_components / blood_component_inventory |
Status updated if unit discarded | SQL UPDATE |
blood_discard_log |
Discard entry for reaction-related unit disposal | SQL INSERT |
| MOH Hemovigilance Portal (INT-BB-005) | Serious reaction report | Outbound report (API / file) |
| EHR Patient Chart | Reaction history and future transfusion alerts | Internal API |
audit_log |
Investigation, classification, and reporting actions | SQL INSERT |
Post-conditions:
- Reaction classified with severity and linked to administration record and component
- Investigation findings documented (clerical check, DAT, hemolysis, visual inspection)
- Serious reactions reported to MOH with tracking reference
- Patient chart updated with reaction history; future transfusion orders trigger alerts
- If product-related: unit discarded and donor flagged for follow-up
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Transfusion stop and symptom documentation | Immediate (< 5 minutes) | Alert Charge Nurse and physician if not documented | transfusion_administration.reaction_occurred timestamp |
| Unit and tubing return to blood bank | < 30 minutes after reaction | Alert blood bank if not received | Return tracking log |
| Clerical check and visual inspection | < 1 hour from return | Alert Blood Bank Supervisor | transfusion_reactions.investigation_started_at |
| DAT and lab results | < 4 hours | Alert Blood Bank Supervisor at 4h | LIS result timestamps |
| Reaction classification | < 24 hours from event | Alert Blood Bank Medical Director at 24h | transfusion_reactions.classified_at |
| MOH hemovigilance report submission (serious) | Within 72 hours per MOH requirement | Alert Blood Bank Medical Director at 48h | transfusion_reactions.reported_to_moh date |
Note: Transfusion reaction investigation is a linear clinical investigation workflow. The reaction record progresses from initial report through investigation to classification and regulatory reporting. No separate state diagram is required.
WF-BB-007: Blood Inventory Management
Process Flow
Actor: Blood Bank Supervisor
Trigger: Daily inventory review, low stock alert, component expiry approaching, or usage demand spike
Pre-conditions:
blood_component_inventoryaccurately reflects current stock and locations- Par levels and reorder rules configured per component and ABO/Rh
- Supervisor opens Blood Component Inventory (SCR-BB-004) or Blood Bank Dashboard (SCR-BB-008).
- System displays: - Current inventory by component type, ABO/Rh, facility, and storage location. - Expiry countdown and FEFO ordering. - Alerts for low stock (below par) and approaching expiry.
- Supervisor reviews low-stock alerts: - For each component/ABO group below par, system suggests reorder quantity based on average daily usage and target days on hand.
- Supervisor initiates order to external blood bank suppliers (INT-BB-006): - System generates electronic request (secure file/API) with required units, component types, and delivery dates.
- Upon shipment arrival:
- Technologist receives shipment, scans unit barcodes, and verifies product details (component type, ABO/Rh, expiry, special processing).
- System creates
blood_componentsandblood_component_inventoryentries for received units. - For inter-facility transfers: - Supervisor initiates transfer; system updates inventory at sending and receiving facilities accordingly.
- System continuously monitors expiry: - Units approaching expiry trigger alerts; supervisor may prioritize their use or plan redistribution.
- For expired or unusable units:
- Supervisor approves discard; technologist records
discard_reason,discard_datetime,discarded_by,witness_id, anddisposal_methodinblood_discard_log. -blood_component_inventory.statusset toDiscarded. - Supervisor generates daily/weekly inventory and wastage reports for internal review and regulatory compliance.
Data Modified:
blood_component_inventory— INSERT (new units) and UPDATE (status, location, facility)blood_components— INSERT (for externally supplied units) and UPDATE (status)blood_discard_log— INSERT (discarded units)blood_quarantine_log— may be INSERT/UPDATE for units pending verificationaudit_log— INSERT
Mermaid Flowchart
Decision Points
- Low stock / expiry alerts: - If triggered → reorder or redistribute. - If not → routine monitoring only.
- Unit suitability (on receipt): - If details mismatch or damage detected → quarantine or discard.
- Discard approval: - Supervisor must approve; system enforces dual sign-off (witness) for discards.
Integration Points
- External Blood Bank Suppliers — INT-BB-006:
- Outbound: blood product requests.
- Inbound: shipment manifests and product details.
- Billing & Claims — INT-BB-004:
- Inventory status drives charge capture when units are issued/administered.
- EHR Facilities/Locations:
- Facility and storage location master data for inventory placement.
Exception Handling
- Mismatch between shipment manifest and scanned units:
- System flags discrepancies; supervisor investigates with supplier.
- Inventory count discrepancies (physical vs system):
- Cycle counts performed; adjustments recorded with reason and audit trail.
- System downtime:
- Temporary manual logs used; later reconciled with system entries; all manual adjustments flagged.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Paper inventory cards and tally sheets | Real-time blood_component_inventory with FEFO and alerts |
Reduces stockouts and wastage |
| Faxed/phone blood requests to suppliers | Electronic requests and shipment manifests | Improves accuracy and traceability |
| Manual expiry tracking lists | Automated expiry alerts and dashboards | Supports KPI on expired unit rate |
| Paper discard forms | blood_discard_log with dual sign-off |
Strengthens governance and auditability |
Remaining Paper Touchpoints: Some suppliers may still send paper packing slips; data is captured into the system and slips can be scanned/archived.
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
blood_component_inventory |
Current stock by component type, ABO/Rh, facility, storage location, expiry | SQL query |
| Par levels and reorder rules (master data) | Target stock levels per component/ABO group, average daily usage, target days on hand | Configuration lookup |
| External supplier shipments | Incoming units with barcodes, component details, ABO/Rh, expiry | Barcode scan + manifest (electronic or paper) |
| Blood Bank Supervisor input | Reorder decisions, transfer requests, discard approvals | UI form input / approval action |
| Cycle count results | Physical vs system inventory comparison | UI form input |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
blood_component_inventory |
New units (from supplier or transfer), updated status, location | SQL INSERT / UPDATE |
blood_components |
New component records for externally supplied units | SQL INSERT |
blood_discard_log |
Discard entries for expired or unusable units (with dual sign-off) | SQL INSERT |
blood_quarantine_log |
Quarantine entries for units pending verification | SQL INSERT / UPDATE |
| External Blood Bank Suppliers (INT-BB-006) | Electronic blood product requests | Secure file / API |
| Billing & Claims (INT-BB-004) | Inventory status for charge capture on issue/administration | Internal API |
audit_log |
Inventory receipt, transfer, discard, and adjustment actions | SQL INSERT |
Post-conditions:
- Inventory accurately reflects current stock with expiry tracking
- Low-stock alerts triggered and reorder requests sent when below par levels
- External shipments received, verified, and entered into inventory
- Expired or unusable units discarded with dual sign-off and audit trail
- Inter-facility transfers reflected in both sending and receiving inventories
- Daily/weekly reports generated for operational and regulatory review
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Low-stock alert generation | < 1 minute after stock drops below par | Immediate dashboard + email to Blood Bank Supervisor | blood_component_inventory par level monitoring |
| Reorder request generation | < 30 minutes after alert acknowledgment (Supervisor-driven) | Escalate to Blood Bank Medical Director if not actioned within 2 hours | audit_log timestamps |
| Supplier shipment receipt and verification | < 30 minutes per shipment | Alert Supervisor if verification incomplete after 1 hour | blood_component_inventory.received_datetime |
| Expiry alert (approaching expiry) | 7 days before expiry (configurable) | Daily dashboard alert; escalate at 3 days remaining | blood_component_inventory.expiry_datetime monitoring |
| Discard processing (expired units) | Same business day as expiry | Alert if expired units not processed within 24 hours | blood_discard_log.discard_datetime |
| Cycle count completion | Monthly (or per facility policy) | Alert Blood Bank Supervisor if not completed by scheduled date | Cycle count schedule |
Note: Blood inventory management is an operational monitoring and replenishment workflow. The component lifecycle (from receipt through availability to issue, expiry, or discard) is defined in the state diagram in WF-BB-002. No additional state diagram is required here.