Nutrition Management Workflows
This document defines six core workflows for the Nutrition Management module in the Gates Group HIS. Each workflow describes process steps, decision logic, integration hooks, exception handling, and the paperless transformation achieved.
Regulatory context (UAE): All workflows must comply with UAE Federal Decree-Law No. 45/2021 on Personal Data Protection (UAE PDPL) for handling patient-identifiable information, and with MOH, DOH (ADHICS), and DHA (NABIDH) requirements for clinical documentation, auditability, and secure data exchange. Nutrition data that forms part of the clinical record is shared with NABIDH/Malaffi where applicable, following local consent and data minimisation rules.
WF-NUT-001: Diet Order Entry & Processing
Process Flow
Actor: Physician (ordering), Dietitian (review), System
Trigger: Patient admitted, diet change ordered, or post‑procedure diet progression
Pre-conditions:
- Patient exists in
patientsand has an active encounter inencounters - ADT event has added patient to dietary census (see WF-NUT-006)
- Patient allergies loaded from
patient_allergiesand mapped tofood_allergen_alerts - Diet types and menu items configured in
diet_type_definitionsandmenu_items
- Physician opens Diet Order Entry (SCR-NUT-001) from the patient chart (CPOE context).
- System loads:
- Patient demographics (from
patients) - Active encounter details (fromencounters) - Current diet order (if any) fromdiet_orders- Food allergen alerts fromfood_allergen_alerts. - Physician selects diet parameters:
- Diet type (FK to
diet_type_definitions) - Texture modification (IDDSI level) - Fluid restriction (mL/day) - Supplements (free text + structured list) - Cultural/religious preferences (e.g., halal, vegetarian, no pork). - System validates the order:
- Checks that diet type is active in
diet_type_definitions- Ensures start date/time ≥ current time - Confirms halal compliance (all menu items mapped to this diet type must haveis_halal = TRUE). - System performs food allergen check:
- Cross-references selected diet type and supplements with
food_allergen_alertsandmenu_items.allergens. - If potential conflict, displays severity-graded warning to physician. - Decision: If severe allergen conflict detected:
- If physician cancels → workflow ends, no new order created.
- If physician overrides → justification captured and stored in
order_audit_log(owned by CPOE; referenced here conceptually). - Physician confirms order details and signs electronically (within CPOE, but diet order data is persisted in Nutrition module).
- System:
- Sets any previous active diet order for the encounter to
status = 'REPLACED'indiet_orders(UPDATE). - Inserts new row intodiet_orderswithstatus = 'ACTIVE'. - System triggers automatic meal plan generation:
- For each remaining meal of the current day and upcoming days in the active menu cycle, creates entries in
meal_plansbased onmenu_cyclesandmenu_items, filtered by diet type, texture, allergens, and cultural preferences. - System updates kitchen production planning:
- Aggregates new/changed meal plans into
kitchen_production_ordersfor upcoming meal services (INSERT/UPDATE). - Generates or updates
tray_ticketsper patient/meal (INSERT/UPDATE).
- Aggregates new/changed meal plans into
- System sends internal notification to:
- Nursing station (via EHR messaging) that diet order has changed.
- Dietitian work queue for review if diet is therapeutic (e.g., renal, diabetic, tube feeding).
- Dietitian reviews diet order and associated meal plans:
- May adjust supplements or special instructions → updates
diet_ordersandmeal_plans(UPDATE).
- May adjust supplements or special instructions → updates
- System logs all changes for audit and UAE PDPL accountability (who changed what, when).
Data Modified:
diet_orders— INSERT (new order), UPDATE (previous order status, later modifications)meal_plans— INSERT (generated plans), UPDATE (if dietitian adjusts), DELETE (if plans invalidated)kitchen_production_orders— INSERT/UPDATE (recalculated production quantities)tray_tickets— INSERT/UPDATE (per-patient tray specs)food_allergen_alerts— READ only (no modification in this workflow)- Shared (in other modules, conceptually): notification/audit tables
Mermaid Flowchart
Decision Points
-
Validation of diet order
- If diet type inactive or start time invalid → system blocks order until corrected.
- If halal requirement not met (e.g., mapped menu items not halal) → system prevents saving unless dietitian explicitly flags exception (e.g., non-Muslim patient, documented). -
Food allergen conflict
- If conflict with severe food allergy (e.g., nuts, shellfish, egg) → hard warning; physician must either cancel or override with justification.
- If mild/moderate conflict (e.g., intolerance) → soft warning; physician can proceed but justification recommended. -
Dietitian review
- If diet is standard (e.g., regular, soft) and screening risk is low → dietitian review optional.
- If diet is therapeutic or patient high-risk → dietitian review mandatory; system flags if not completed within defined SLA (e.g., 24h).
Integration Points
- CPOE module
- Inbound: diet order entry UI and e-signature context.
- Data: diet order details (diet type, texture, fluid restriction, supplements).
-
Mechanism: Internal API / HL7
ORM^O01(INT-NUT-001). -
EHR Patient Management (
ehr-patient-mgmt) - Read:
patients,patient_allergies,facilities,locations. -
Purpose: demographics, allergy mapping, location for tray delivery.
-
Scheduling / ADT
- Read:
encountersand ADT events (for active encounter and bed/ward). -
Purpose: ensure order tied to correct encounter and location.
-
EHR Clinical Notes
- Outbound: dietitian comments may be referenced in clinical notes (via INT-NUT-003).
Exception Handling
- Allergy data missing or incomplete:
- System displays banner: “Food allergy list incomplete — verify with patient / nursing.”
-
Allows order but logs warning; dietitian review is auto-flagged as high priority.
-
Menu mapping failure (no suitable menu items for selected diet + allergens + preferences):
- System alerts: “No menu items available for this combination. Please adjust diet type or preferences.”
-
Meal plan generation is blocked until resolved; dietitian is notified.
-
Integration failure with CPOE or ADT:
- Diet order saved locally with
status = 'PENDING_INTEGRATION'. -
Background job retries; if >3 failures, alerts IT support and dietitian.
-
Database conflict (concurrent diet order changes):
- System uses optimistic locking; if conflict detected, prompts user to reload latest data and re-apply changes.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Handwritten diet order slips sent to kitchen | Structured diet orders in diet_orders with real-time propagation to kitchen |
Eliminates transcription errors and delays |
| Manual kitchen communication boards for diet changes | Automatic update of kitchen_production_orders and tray_tickets |
Ensures latest diet is reflected in every meal |
| Handwritten labels for dietary restrictions on trays | System-generated tray tickets with allergens and preferences | Improves patient safety and compliance |
| Phone calls from nursing to kitchen for diet changes | Event-driven notifications and dashboards | Reduces interruptions and miscommunication |
Remaining Paper Touchpoints: Optional printed diet summary for patient education on discharge, if patient declines portal access.
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
| EHR / Patient Chart | Patient demographics (MRN, Emirates ID, age, sex) | patients table |
| EHR / Patient Chart | Active allergies (food and drug) | patient_allergies table (SNOMED CT coded) |
| Scheduling / ADT | Active encounter details (ward, bed, admission date) | encounters table |
| Nutrition Master Data | Diet type definitions and menu cycles | diet_type_definitions, menu_cycles tables |
| Nutrition Master Data | Menu items with allergen and halal mappings | menu_items table |
| Nutrition Module | Food allergen alerts derived from patient allergies | food_allergen_alerts table |
| Provider | Diet type, texture (IDDSI), fluid restriction, supplements, cultural preferences | Diet Order Entry form (SCR-NUT-001) |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
diet_orders |
New active diet order record | SQL INSERT |
diet_orders |
Previous diet order set to REPLACED | SQL UPDATE |
meal_plans |
Generated meal plans for upcoming meals | SQL INSERT (multiple rows) |
kitchen_production_orders |
Updated production quantities for kitchen | SQL INSERT/UPDATE |
tray_tickets |
Per-patient tray specifications with barcodes | SQL INSERT/UPDATE |
| Nursing Station | Diet order change notification | Internal notification |
| Dietitian Work Queue | Review task (if therapeutic diet) | Internal notification |
Post-conditions:
- New diet order exists with
status = 'ACTIVE'and valid e-signature - Any previous active diet order for the encounter has
status = 'REPLACED' - Meal plans generated for all remaining meals in current and upcoming menu cycle days
- Kitchen production orders reflect updated tray counts and item quantities
- Tray tickets updated with current diet, allergens, and preferences
- Dietitian notified if diet is therapeutic or patient is high-risk
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Diet order signing to meal plan generation | < 30 seconds | Alert IT if > 2 min | meal_plans.created_datetime minus diet_orders.order_datetime |
| Kitchen production order update | < 5 minutes after meal plan generation | Alert Kitchen Manager if > 10 min | kitchen_production_orders.updated_datetime |
| Tray ticket generation | < 5 minutes after meal plan generation | Alert Diet Technician if > 10 min | tray_tickets.created_datetime |
| Dietitian review (therapeutic diet) | < 24 hours from order entry | Alert Dietitian Supervisor at 24h | diet_orders.dietitian_reviewed_datetime |
| Nursing notification delivery | < 1 minute from order signing | Alert IT if > 5 min | notification_log.sent_datetime |
| Late diet order change (after production cut-off) | Kitchen Manager review within 15 min | Escalate to Food Services Director | diet_orders.order_datetime vs kitchen_production_orders.cutoff_datetime |
State Transition Diagram
WF-NUT-002: Nutrition Screening & Assessment
Process Flow
Actor: Nurse (screening), Dietitian (assessment), System
Trigger: Patient admission (screening within 24h), high-risk screen triggers full assessment
Pre-conditions:
- Active inpatient encounter in
encounters - Nutrition screening tools configured in master data (
Nutrition Screening Tools) - Patient anthropometrics (weight, height) available or scheduled to be measured
- Lab integration with LIS configured for nutrition-related markers (INT-NUT-005)
- Nurse opens Nutrition Screening Form (SCR-NUT-003) from admission workflow.
- System loads: - Patient demographics and encounter details. - Latest weight/height from EHR (if available). - Selected screening tool (e.g., NRS-2002, MUST) per facility configuration.
- Nurse completes screening questions: - Recent weight loss, reduced intake, disease severity, BMI, etc.
- System auto-calculates screening score and assigns risk level (low / moderate / high) based on tool-specific rules.
- System saves screening record:
- Inserts row into
nutrition_screeningwith score, risk level, andscreened_by. - Decision: If risk level is moderate or high:
- System auto-creates dietitian referral and flags patient in dietitian worklist.
- Sets
referred_to_dietitian = TRUEinnutrition_screening. - Dietitian opens Nutrition Assessment (SCR-NUT-004) from worklist.
- System pre-populates assessment form with:
- Screening results from
nutrition_screening. - Anthropometrics (weight, height, BMI) from EHR or last assessment. - Relevant lab values (albumin, prealbumin, electrolytes, glucose) from LIS via INT-NUT-005. - Dietitian conducts comprehensive assessment: - Reviews weight history, dietary intake, functional status, physical exam findings. - Documents findings and malnutrition risk classification (e.g., per GLIM or local policy).
- Dietitian defines nutrition goals:
- Calorie and protein targets, fluid goals, route of nutrition (oral/EN/TPN), supplements.
- System saves assessment:
- Inserts row into
nutrition_assessmentswith targets, findings, and care plan text.
- Inserts row into
- System updates care plan:
- Links assessment to active diet order and meal plans (via
diet_ordersandmeal_plansreferences). - Schedules reassessment date/time (stored in
nutrition_assessmentsor related scheduling table).
- Links assessment to active diet order and meal plans (via
- System writes summary note to EHR clinical notes (via INT-NUT-003) for inclusion in NABIDH/Malaffi shared record.
- Decision: If malnutrition indicators present but not coded:
- System prompts dietitian/physician to consider adding ICD-10-AM malnutrition diagnosis to problem list (for Malnutrition Documentation Rate KPI).
Data Modified:
nutrition_screening— INSERT (new screening), UPDATE (if corrections)nutrition_assessments— INSERT (new assessment), UPDATE (if amended)diet_orders— READ only (for context)meal_plans— READ only (for context; may be indirectly adjusted in other workflows)
Mermaid Flowchart
Decision Points
-
Risk level threshold
- Ifrisk_level= low → no immediate dietitian referral; rescreen per policy (e.g., weekly).
- Ifrisk_level= moderate/high → automatic dietitian referral and SLA tracking. -
Availability of anthropometrics and labs
- If recent weight/height or labs missing → system prompts nurse/dietitian to order measurements or labs; assessment can be saved with missing data flagged. -
Malnutrition coding prompt
- If assessment indicates malnutrition (per tool) and no corresponding ICD-10-AM code in problem list → system prompts for coding; if user declines, requires reason (e.g., not clinically confirmed).
Integration Points
- EHR Patient Chart (INT-NUT-003)
- Inbound: anthropometrics, problem list.
-
Outbound: nutrition screening and assessment summaries as clinical notes.
-
LIS (INT-NUT-005)
- Inbound: lab results (albumin, prealbumin, electrolytes, glucose).
-
Used to support assessment and monitoring.
-
Scheduling
- Used to schedule reassessment tasks (may be via task/appointment subsystem).
Exception Handling
- Screening not completed within 24h of admission:
-
System generates alert to nursing manager and flags patient on Nutrition Analytics Dashboard (SCR-NUT-008).
-
LIS connectivity issues:
-
Assessment can proceed with last available labs; system marks lab section as “data unavailable” and logs integration error.
-
Partial assessment (patient off ward, non-cooperative):
-
Dietitian can save incomplete assessment with status
INCOMPLETE; system requires follow-up date. -
PDPL considerations:
- Access to screening/assessment limited by role; all access logged for audit.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Paper nutrition screening forms on admission | Electronic screening in nutrition_screening with auto-scoring |
Ensures 100% legibility and automatic KPI tracking |
| Manual dietitian referral slips | Auto-referral and worklist generation based on risk level | Reduces missed referrals and delays |
| Handwritten nutrition care plans in paper charts | Structured nutrition_assessments linked to diet orders and meal plans |
Enables analytics on targets vs. delivery |
| Manual tally of malnutrition cases for audits | Systematic prompts and coded data | Supports quality reporting to MOH/DOH/DHA |
Remaining Paper Touchpoints: None — fully digital.
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
| EHR / Patient Chart | Patient demographics, weight, height, BMI | patients table, vital_signs |
| Scheduling / ADT | Active inpatient encounter | encounters table |
| Nutrition Master Data | Screening tool configuration (NRS-2002, MUST) | Master data tables |
| Nurse | Screening responses (weight loss, intake, disease severity) | Nutrition Screening Form (SCR-NUT-003) |
| LIS (INT-NUT-005) | Albumin, prealbumin, electrolytes, glucose | HL7 ORU^R01 / FHIR Observation |
| Dietitian | Assessment findings, malnutrition classification, calorie/protein targets | Nutrition Assessment Form (SCR-NUT-004) |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
nutrition_screening |
Screening record with score, risk level, screened_by | SQL INSERT |
nutrition_assessments |
Assessment record with targets, findings, care plan | SQL INSERT |
| Dietitian Work Queue | Auto-referral for moderate/high risk patients | Internal notification |
| EHR Clinical Notes (INT-NUT-003) | Screening and assessment summaries | FHIR Observation, CarePlan |
| Problem List | ICD-10-AM malnutrition diagnosis prompt (if applicable) | FHIR Condition (via EHR) |
| Scheduling | Reassessment date/time | Task/appointment record |
Post-conditions:
- Screening record exists in
nutrition_screeningwith calculated score and risk level - If moderate/high risk: dietitian referral created and patient flagged in worklist
- If assessment completed: targets and care plan linked to diet orders and meal plans
- Summary note written to EHR clinical record for NABIDH/Malaffi sharing
- Reassessment scheduled per facility policy
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Screening completion from admission | < 24 hours | Alert Nursing Manager at 24h | nutrition_screening.screening_date minus encounters.admission_datetime |
| Auto-referral to dietitian (moderate/high risk) | < 1 minute from screening completion | Alert IT if > 5 min | nutrition_screening.referred_datetime |
| Dietitian assessment (high risk) | < 24 hours from referral | Alert Dietitian Supervisor at 24h | nutrition_assessments.assessment_date minus referral time |
| Dietitian assessment (moderate risk) | < 48 hours from referral | Alert Dietitian Supervisor at 48h | nutrition_assessments.assessment_date minus referral time |
| Lab result availability for assessment | < 4 hours from specimen collection | Per LIS SLA | lab_results.resulted_datetime |
| Reassessment (high risk inpatient) | Every 3–5 days | Alert at overdue date | nutrition_assessments.next_reassessment_date |
| EHR note posting | < 5 minutes from assessment save | Alert if > 15 min | Integration log timestamp |
WF-NUT-003: Meal Production & Tray Assembly
Process Flow
Actor: Kitchen Manager, Kitchen Staff, Diet Technician, System
Trigger: Meal service time approaching (breakfast, lunch, dinner)
Pre-conditions:
- Active diet orders in
diet_ordersand meal plans inmeal_plansfor the meal date/time - ADT census up to date (WF-NUT-006)
- Menu cycles configured in
menu_cyclesand items inmenu_items - Tray tickets generation logic configured
- At defined cut-off time before each meal (e.g., 2 hours), system runs production planning job.
- System queries
meal_plansfor the target meal date and meal type (e.g., breakfast) withstatus = 'PLANNED'. - System aggregates required quantities per menu item:
- Counts number of portions per
menu_items.item_idconsidering diet type, texture, and supplements. - System inserts or updates a
kitchen_production_ordersrecord for the meal: -production_items_jsoncontains item IDs and quantities. - System generates or updates
tray_ticketsfor each patient: - Includes patient name, MRN, bed location, diet type, allergen alerts, menu items, special instructions, and barcode. - Kitchen Manager views Kitchen Production Dashboard (SCR-NUT-006): - Reviews total tray count and item quantities. - Adjusts production if last-minute ADT changes occurred (system auto-refreshes).
- Kitchen Staff begin meal preparation:
- Mark preparation status per item or batch in
kitchen_production_orders(UPDATE). - Diet Technician manages tray assembly using Tray Assembly & Delivery screen (SCR-NUT-007): - Scans tray ticket barcode to display patient-specific tray requirements.
- Staff assemble tray according to ticket: - System may require confirmation of key items (e.g., main dish, dessert, beverage).
- Decision: If an item is unavailable (stock-out or quality issue):
- Staff select a system-suggested substitute from
menu_itemsfiltered by diet type, allergens, and halal status. - System updates
tray_tickets.menu_itemsandkitchen_production_orders.production_items_jsonaccordingly.
- Staff select a system-suggested substitute from
- Staff perform temperature logging:
- Record hot/cold food temperatures in associated QC table (not owned here, but referenced) or within
kitchen_production_ordersextension.
- Record hot/cold food temperatures in associated QC table (not owned here, but referenced) or within
- When all trays for a ward are assembled:
- Diet Technician sets
status = 'READY_FOR_DELIVERY'for relevanttray_ticketsand updateskitchen_production_orders.statusas appropriate.
- Diet Technician sets
- System timestamps production completion in
kitchen_production_orders.completed_datetime.
Data Modified:
kitchen_production_orders— INSERT (new production order), UPDATE (status, completion time, item adjustments)tray_tickets— INSERT (new tickets), UPDATE (substitutions, status, barcode scans)meal_plans— READ only (source of planned meals)
Mermaid Flowchart
Decision Points
-
Item availability
- If item available → proceed with planned menu.
- If unavailable → system suggests substitutes that match diet type, allergens, and halal requirements; staff must choose one or escalate to dietitian. -
Temperature compliance
- If recorded temperature outside thresholds (hot ≥ 63°C, cold ≤ 5°C) → system flags QC alert and may require supervisor sign-off before release. -
Late ADT or diet order changes
- If changes occur after cut-off → system can generate delta updates tokitchen_production_ordersandtray_tickets; Kitchen Manager decides whether to accommodate or defer to next meal.
Integration Points
- Scheduling / ADT (INT-NUT-002)
-
Inbound: updated census and bed locations for tray routing.
-
EHR Patient Management
-
Read: patient identifiers and bed locations.
-
Inventory / Materials Management (if present)
- Optional integration to check stock levels for menu items.
Exception Handling
- Production job failure:
-
System logs error and alerts Kitchen Manager; allows manual triggering of production run.
-
Barcode scanner failure:
-
Staff can manually select patient from list with dual verification (name + MRN + bed); system logs that barcode verification was bypassed.
-
Data inconsistency (tray ticket references non-existent menu item):
- System prevents assembly, prompts for regeneration of tray ticket.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Paper production tallies for each meal | kitchen_production_orders with aggregated quantities |
Reduces counting errors and improves forecasting |
| Handwritten tray tickets | Electronic tray_tickets with barcodes and allergen alerts |
Enhances safety and traceability |
| Manual meal counts by ward | Automated tray counts based on meal_plans and ADT census |
Aligns production with real-time census |
| Paper temperature logs | Digital temperature entries linked to production orders | Facilitates audits and quality reporting |
Remaining Paper Touchpoints: None — fully digital.
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
meal_plans |
Planned meals for target meal date/type with patient, diet, and menu items | SQL query |
menu_items |
Menu item details, allergens, halal status, nutritional info | Master data table |
menu_cycles |
Active menu cycle for the facility | Master data table |
| Scheduling / ADT (INT-NUT-002) | Updated patient census and bed locations | HL7 ADT / internal API |
diet_orders |
Active diet orders with diet type, texture, restrictions | SQL query |
| Kitchen Staff | Item availability, substitutions, temperature readings | Tray Assembly screen (SCR-NUT-007) |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
kitchen_production_orders |
Production order with aggregated item quantities | SQL INSERT/UPDATE |
tray_tickets |
Per-patient tray specifications with barcodes and allergen alerts | SQL INSERT/UPDATE |
| Kitchen Production Dashboard (SCR-NUT-006) | Total tray counts, item quantities, preparation status | Real-time UI |
cleaning_supplies_usage (conceptual) |
Temperature logs for QC compliance | SQL INSERT |
Post-conditions:
- Kitchen production order exists with correct item quantities for the meal service
- Tray tickets generated for every patient with active diet orders
- All mandatory checklist items confirmed by kitchen staff
- Temperature logs recorded for hot and cold food items
- Tray status set to
READY_FOR_DELIVERYfor completed trays
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Production planning job completion | < 2 minutes | Alert IT if > 5 min | kitchen_production_orders.generated_datetime |
| Tray ticket generation | < 5 minutes after production planning | Alert Kitchen Manager if > 10 min | tray_tickets.created_datetime |
| Meal preparation (breakfast) | Complete by 06:30 | Alert Kitchen Manager at 06:15 if behind | kitchen_production_orders.status |
| Meal preparation (lunch) | Complete by 11:30 | Alert Kitchen Manager at 11:15 if behind | kitchen_production_orders.status |
| Meal preparation (dinner) | Complete by 17:30 | Alert Kitchen Manager at 17:15 if behind | kitchen_production_orders.status |
| Tray assembly per ward | < 20 minutes per ward | Alert Supervisor if > 30 min | tray_tickets start/end timestamps |
| Temperature compliance check | At point of assembly | QC alert if out of range (hot < 63°C, cold > 5°C) | Temperature log entries |
State Transition Diagram
WF-NUT-004: Meal Delivery & Patient Satisfaction
Process Flow
Actor: Diet Technician, Nursing Assistant, System
Trigger: Trays assembled and marked as ready for delivery
Pre-conditions:
tray_tickets.status = 'READY_FOR_DELIVERY'- Patient location up to date via ADT (WF-NUT-006)
- Mobile/tablet devices available with barcode scanning capability
- Diet Technician opens Tray Assembly & Delivery screen (SCR-NUT-007) in delivery mode.
- System displays list of trays ready for delivery, grouped by ward/room/bed.
- Staff select a tray and scan the tray ticket barcode.
- At patient bedside, staff scan patient wristband barcode (MRN/Emirates ID).
- System matches tray ticket patient ID with scanned patient ID.
- Decision: If IDs do not match: - System displays red alert and blocks delivery. - Staff must re-check tray and patient; may re-scan or return tray to kitchen.
- If IDs match: - System displays diet order summary (diet type, allergens, special instructions) for final verification.
- Staff deliver tray and mark
tray_tickets.status = 'DELIVERED', recordingdelivered_datetimeanddelivered_by. - System writes a corresponding
meal_service_recordsentry: - Links tomeal_plansand includes meal type, delivered time, and staff. - After meal period, staff collect trays:
- For patients requiring intake monitoring, staff open the meal record and enter consumption percentage and any comments.
- System updates
meal_service_records.consumption_percentageand optionallypatient_satisfaction_score(if survey completed). - Decision: If consumption < threshold (e.g., <50%) or patient reports poor appetite:
- System flags record and notifies dietitian for possible intervention.
- System aggregates satisfaction and intake data for Nutrition Analytics Dashboard (SCR-NUT-008).
Data Modified:
tray_tickets— UPDATE (status, delivery details)meal_service_records— INSERT (on delivery), UPDATE (consumption, satisfaction)meal_plans— READ only
Mermaid Flowchart
Decision Points
-
Patient-tray identity match
- If mismatch → hard stop; no delivery allowed until resolved.
- If match → proceed with delivery. -
Intake adequacy
- If consumption below configured threshold → system flags for dietitian review.
- If adequate → no alert. -
Satisfaction score
- If low score (e.g., <3/5) → optional workflow to log complaint or improvement suggestion.
Integration Points
- EHR Patient Management
-
Wristband barcode data (MRN/Emirates ID) used for identity verification.
-
EHR Intake/Output (INT-NUT-003)
- Outbound: food intake data may be summarised into overall intake/output records.
Exception Handling
- Barcode unreadable:
-
Staff can manually select patient from list with dual verification (name + MRN + date of birth); system logs manual override.
-
Patient off ward or NPO (nil per os):
-
Staff can mark tray as “Not delivered – patient unavailable/NPO”; system updates
meal_service_recordswith reason. -
Device offline:
- App caches delivery events locally and syncs when connectivity restored; timestamps preserved.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Paper delivery logs for trays | tray_tickets status and meal_service_records timestamps |
Real-time visibility and traceability |
| Manual intake/output sheets for food | Structured meal_service_records.consumption_percentage |
Enables calorie delivery vs. target KPI |
| Paper satisfaction surveys | In-app satisfaction capture per meal | Supports continuous quality improvement |
| Manual incident reporting for wrong-tray events | Automated mismatch alerts and audit logs | Reduces risk of wrong diet delivery |
Remaining Paper Touchpoints: None — fully digital.
Inputs and Outputs
Inputs:
| Source | Data Element | Format / Notes |
|---|---|---|
| WF-NUT-003 (Meal Production) | Assembled tray with ticket | Physical tray + barcode ticket from tray_tickets |
tray_tickets |
Tray details: patient ID, diet type, bed location, meal type | Status = READY_FOR_DELIVERY |
| EHR Patient Management | Patient wristband barcode (MRN / Emirates ID) | Scanned at bedside for identity verification |
diet_orders |
Active diet order summary (diet type, allergens, special instructions) | Displayed for final verification before delivery |
meal_plans |
Expected meal for this patient, meal type, and timing | Links tray to planned meal service |
Outputs:
| Destination | Data Element | Format / Notes |
|---|---|---|
tray_tickets |
Status = DELIVERED, delivered_datetime, delivered_by |
Updated on successful bedside verification and delivery |
meal_service_records |
Delivery record: meal type, delivered time, staff ID, patient link | INSERT on delivery |
meal_service_records |
consumption_percentage, patient_satisfaction_score |
UPDATE after meal collection |
| Dietitian notification | Low-intake or low-satisfaction alert | Triggered if consumption < threshold or satisfaction score < 3/5 |
| Nutrition Analytics Dashboard (SCR-NUT-008) | Aggregated intake and satisfaction data | Real-time feed for KPI reporting |
Post-conditions:
- Tray delivery recorded digitally with timestamp and staff identification
- Patient identity verified via barcode match before every delivery
- Consumption and satisfaction data captured for ongoing nutritional monitoring
- Low-intake cases flagged for dietitian intervention
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Tray dispatch from kitchen to ward | ≤ 20 min from production completion | Alert kitchen manager if tray not dispatched within 25 min | tray_tickets.status change from READY_FOR_DELIVERY to in-transit |
| Patient identity verification (barcode scan) | ≤ 30 sec per tray | N/A (real-time at bedside) | Scan timestamp in tray_tickets |
| Tray delivery and status update | ≤ 30 min from dispatch | Alert if tray still not delivered 35 min after dispatch | tray_tickets.delivered_datetime − dispatch time |
| Consumption and satisfaction recording | ≤ 60 min after meal collection | Alert if not recorded by end of meal service period | meal_service_records.updated_at |
| Low-intake dietitian notification | ≤ 5 min from recording | Auto-escalate to dietitian supervisor if not acknowledged within 30 min | Notification audit log |
State Transition Diagram
WF-NUT-005: Enteral & Parenteral Nutrition Management
Process Flow
Actor: Physician, Dietitian, Pharmacist (for TPN), Nurse, System
Trigger: Patient unable to meet nutritional needs orally
Pre-conditions:
- Active encounter in
encounters - Nutrition assessment completed or in progress (
nutrition_assessments) - CPOE integration for EN/TPN orders (INT-NUT-001, INT-NUT-004)
- LIS integration for metabolic monitoring (INT-NUT-005)
- Physician opens CPOE and selects Enteral/Parenteral Nutrition order set.
- System loads: - Patient anthropometrics and latest nutrition assessment (if available). - Relevant labs (electrolytes, glucose, liver/renal function).
- Physician specifies: - Nutrition type (EN or TPN), route (NG, PEG, central line, etc.), and indication.
- Dietitian is notified (or co-authors order) to calculate requirements:
- Reviews
nutrition_assessmentsor performs quick assessment if none exists. - Determines calorie, protein, and fluid targets. - For Enteral Nutrition (EN):
- Dietitian selects formula from
enteral_parenteral_orders.formula_namereferencing facility formulary. - Sets rate (mL/hr), total volume, and schedule (continuous/bolus). - For TPN: - Physician enters high-level prescription (e.g., kcal, grams of amino acids, dextrose, lipids). - Pharmacist uses PIS/TPN compounding system to derive detailed formulation.
- System validates order:
- Checks against calorie/protein targets from
nutrition_assessments. - Verifies fluid limits and electrolyte constraints based on labs. - Physician signs order in CPOE.
- System inserts record into
enteral_parenteral_orderswithstatus = 'ACTIVE'and links to patient and encounter. - For TPN, system sends order details to PIS/TPN compounding system (INT-NUT-004).
- Nurse administers EN/TPN:
- Records start/stop times and any intolerance (e.g., residuals, GI symptoms) in EHR.
- System periodically calculates delivered calories vs. target:
- Uses
enteral_parenteral_ordersand administration records to estimate delivered volume and energy.
- Uses
- Decision: If delivered calories < threshold (e.g., <80% of target over 48h):
- System flags case for dietitian review and potential order adjustment.
- When patient transitions to oral diet:
- Physician/dietitian updates
enteral_parenteral_orders.status = 'DISCONTINUED'and adjustsdiet_ordersaccordingly.
- Physician/dietitian updates
Data Modified:
enteral_parenteral_orders— INSERT (new EN/TPN order), UPDATE (status, adjustments)nutrition_assessments— READ (for targets), UPDATE (if reassessment)diet_orders— UPDATE (when transitioning to oral diet)
Mermaid Flowchart
Decision Points
-
EN vs. TPN selection
- EN preferred when GI tract functional; TPN reserved for contraindications to EN. -
Validation against targets and labs
- If order exceeds fluid limits or conflicts with electrolyte status → system blocks or requires override with justification. -
Calorie delivery adequacy
- If delivered <80% of target over defined window → triggers review; may prompt change in rate, formula, or route.
Integration Points
- CPOE (INT-NUT-001)
-
Inbound: order entry and e-signature context.
-
PIS / TPN Compounding (INT-NUT-004)
-
Outbound: TPN order details for compounding and label generation.
-
LIS (INT-NUT-005)
-
Inbound: metabolic labs for monitoring and dose adjustment.
-
EHR Nursing Documentation
- Inbound: administration records used to calculate delivered calories.
Exception Handling
- Missing nutrition assessment:
-
System prompts dietitian to complete assessment; order can be placed with provisional targets but flagged.
-
PIS integration failure:
-
TPN order remains in
enteral_parenteral_orderswithstatus = 'PENDING_PIS'; system retries and alerts pharmacy. -
Lab data outdated:
- System warns if key labs older than configured threshold (e.g., 72h); suggests ordering new labs.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Paper TPN calculation worksheets | Structured EN/TPN orders in enteral_parenteral_orders with electronic calculations |
Reduces calculation errors and improves traceability |
| Manual enteral feeding records | Electronic administration records linked to orders | Enables accurate calorie delivery calculations |
| Handwritten calorie count sheets | Automated estimation of delivered vs. target calories | Supports TPN Order Accuracy KPI |
| Faxed TPN orders to pharmacy | Real-time digital transmission to PIS | Shortens turnaround time and reduces miscommunication |
Remaining Paper Touchpoints: None — fully digital.
Inputs and Outputs
Inputs:
| Source | Data Element | Format / Notes |
|---|---|---|
| CPOE (INT-NUT-001) | EN or TPN order: nutrition type, route, indication, clinical targets | ORM^O01 or FHIR NutritionOrder / ServiceRequest |
nutrition_assessments |
Calorie, protein, and fluid targets from dietitian assessment | Referenced during order creation and validation |
| LIS (INT-NUT-005) | Relevant lab results: albumin, electrolytes, glucose, triglycerides | ORU^R01 or FHIR Observation; used for monitoring and dose adjustment |
| EHR Nursing Documentation | EN/TPN administration records: start/stop times, volumes infused, intolerance events | Inbound from nursing flow sheets |
| Facility formulary | EN formula options and TPN compounding templates | Master data from enteral_parenteral_orders.formula_name references |
Outputs:
| Destination | Data Element | Format / Notes |
|---|---|---|
enteral_parenteral_orders |
New EN/TPN order record with status ACTIVE |
INSERT on physician signature |
| PIS / TPN Compounding (INT-NUT-004) | TPN order details for compounding and labelling | Outbound JSON API; sent for TPN orders only |
nutrition_assessments |
Updated assessment if reassessment triggered | UPDATE if dietitian revises targets |
diet_orders |
Status change when transitioning patient from EN/TPN to oral diet | UPDATE to discontinue EN/TPN and activate oral diet order |
| Dietitian notification | Calorie delivery shortfall alert | Triggered if delivered < 80% of target over 48 h |
Post-conditions:
- EN/TPN order active and linked to patient encounter
- For TPN, compounding request transmitted to Pharmacy
- Calorie delivery monitoring initiated with automated shortfall alerts
- Transition to oral diet documented when clinically appropriate
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| EN/TPN order entry and signing in CPOE | ≤ 30 min from clinical decision | Alert dietitian supervisor if order not signed within 1 h | enteral_parenteral_orders.created_at − clinical decision timestamp |
| Dietitian target calculation | ≤ 2 h from order placement (non-urgent) | Escalate to lead dietitian if not completed within 4 h | nutrition_assessments.updated_at |
| TPN order transmission to PIS | ≤ 1 min from physician signature | Alert if PIS acknowledgement not received within 5 min | Integration engine message log |
| TPN compounding and delivery by Pharmacy | ≤ 4 h from order receipt (per PIS SLA) | Escalate to pharmacy supervisor if not compounded within 6 h | PIS compounding status |
| Calorie delivery adequacy check | Automated; evaluated every 24 h | Dietitian notified if < 80% target over 48 h | System calculation from administration records |
| Transition to oral diet documentation | ≤ 30 min from clinical decision | Alert if EN/TPN not discontinued within 2 h of oral diet order | enteral_parenteral_orders.status change timestamp |
State Transition Diagram
WF-NUT-006: ADT-Triggered Census Update
Process Flow
Actor: System (automated), Dietitian (review), Kitchen Manager (review)
Trigger: ADT event (A01 admit, A02 transfer, A03 discharge) or diet order change
Pre-conditions:
- HL7 ADT feed from Scheduling/ADT module configured (INT-NUT-002)
- Mapping between ADT locations and nutrition service areas established
- Default diet policy defined (e.g., “NPO until diet ordered” or “Regular” per facility)
- System receives ADT message (A01/A02/A03) from Scheduling module.
- System parses message and identifies: - Patient ID, encounter ID, facility, ward, room, bed. - Event type (admission, transfer, discharge).
- Admission (A01):
- System adds patient to internal dietary census list.
- Applies default diet policy:
- Either creates a provisional
diet_ordersrecord (e.g., “NPO until evaluated”) or marks patient as “Awaiting diet order”.
- Either creates a provisional
- Transfer (A02):
- System updates patient location in census and in
tray_ticketsfor future meals. - Recalculates routing for meal delivery carts. - Discharge (A03):
- System removes patient from dietary census.
- Sets any future
meal_planstostatus = 'CANCELLED'. - Updatestray_ticketsfor future meals tostatus = 'CANCELLED'. - For any diet order change (from WF-NUT-001): - System triggers immediate refresh of meal plans and tray tickets for upcoming meals.
- System generates updated census reports per meal service: - Ward-wise tray counts and special diet counts available in Patient Dietary Census screen (SCR-NUT-002).
- Decision: If ADT message conflicts with existing encounter data (e.g., unknown encounter ID): - System logs error and places event in exception queue for manual reconciliation.
- Dietitian and Kitchen Manager can view real-time census and verify that admissions/transfers/discharges are reflected correctly.
- System retains ADT event history for audit and PDPL accountability.
Data Modified:
diet_orders— INSERT (default diet or NPO on admission, depending on policy), UPDATE (if status changes on discharge)meal_plans— UPDATE (status changes), DELETE (if invalidated), INSERT (if new plans generated)tray_tickets— UPDATE (location, status), INSERT (for new patients), DELETE (if invalidated)- Internal census structures (not necessarily a dedicated table; may be derived from
encounters+diet_orders)
Mermaid Flowchart
Decision Points
-
Default diet policy on admission
- If facility uses default NPO → create NPO diet order until physician orders specific diet.
- If facility uses default regular diet → create regular diet order unless contraindicated. -
Handling of transfers
- If transfer within same facility → update location only.
- If transfer between facilities → may require re-generation of menu plans based on facility-specific menu cycles. -
Data consistency checks
- If encounter ID not found or patient not known → event sent to exception queue for manual review.
Integration Points
- Scheduling / ADT (INT-NUT-002)
- Inbound: HL7 ADT messages (A01/A02/A03).
-
Data: patient, encounter, location, event type.
-
EHR Patient Management
- Shared use of
facilities,departments,locationsfor routing.
Exception Handling
- Missing or malformed ADT messages:
-
System logs error with raw message; no census update performed; alerts IT.
-
Duplicate ADT events:
-
System detects duplicates based on message control ID; ignores duplicates while logging.
-
Network interruptions:
- ADT interface engine queues messages; Nutrition module processes when connection restored.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Manual census boards in kitchen | Real-time census derived from ADT and diet_orders |
Reflects admissions, transfers, discharges instantly |
| Phone calls from wards to kitchen for ADT updates | Automated HL7 ADT-driven updates | Reduces communication burden and errors |
| Paper diet change notices | Event-driven updates to meal_plans and tray_tickets |
Ensures correct diet at next meal |
Remaining Paper Touchpoints: None — fully digital.
Inputs and Outputs
Inputs:
| Source | Data Element | Format / Notes |
|---|---|---|
| Scheduling / ADT (INT-NUT-002) | ADT event: A01 (admit), A02 (transfer), A03 (discharge) | HL7 ADT^A01/A02/A03 or FHIR Encounter |
ADT message segments |
Patient ID, encounter ID, ward, room, bed, event timestamp | Parsed from PID, PV1, EVN segments |
| Facility configuration | Default diet policy (NPO vs. Regular), location-to-kitchen mapping | Master data; determines behaviour on A01 |
| WF-NUT-001 (Diet Order Entry) | Diet order changes | Internal event; triggers census refresh |
Outputs:
| Destination | Data Element | Format / Notes |
|---|---|---|
diet_orders |
Provisional diet order on admission (e.g., NPO or default) | INSERT on A01 (per facility policy) |
diet_orders |
Status = COMPLETED or DISCONTINUED on discharge |
UPDATE on A03 |
meal_plans |
New plans for admitted patients; cancelled plans for discharged patients | INSERT/UPDATE/DELETE based on event type |
tray_tickets |
Updated bed location on transfer; cancelled tickets on discharge | UPDATE (A02) or UPDATE status = CANCELLED (A03) |
| Patient Dietary Census (SCR-NUT-002) | Real-time census with ward-wise tray counts and special diet counts | Derived view from encounters + diet_orders |
| Exception queue | Unmatched or conflicting ADT events | Logged for manual reconciliation |
Post-conditions:
- Dietary census accurately reflects current inpatient population
- Tray routing updated immediately after patient transfers
- Discharged patients removed from future meal plans
- Newly admitted patients appear on census with appropriate default diet status
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| ADT message receipt and parsing | ≤ 5 sec from ADT event | Alert integration team if queue delay > 1 min | Integration engine message receipt timestamp |
| Census update (A01/A02/A03 processing) | ≤ 30 sec from message receipt | Alert if processing > 2 min | Census update log timestamp |
| Meal plan regeneration after census change | ≤ 2 min from census update | Alert kitchen manager if plans not ready 5 min before next meal cut-off | meal_plans.created_at |
| Exception queue resolution | ≤ 30 min for manual reconciliation | Escalate to IT if unresolved within 1 h | Exception queue age |
| Census report availability for next meal service | Ready at least 30 min before meal service cut-off | Alert dietitian and kitchen manager if census stale | Census report generation timestamp |