Nutrition Management Screen Requirements
Screen Inventory
Screen ID
Screen Name
Primary Actor(s)
Workflow(s)
Access Level
SCR-NUTRITION-001
Diet Order Entry
Physician, Dietitian
WF-NUT-001, WF-NUT-005
Ordering providers, Clinical Dietitians
SCR-NUTRITION-002
Patient Dietary Census
Dietitian, Diet Technician, Kitchen Manager
WF-NUT-001, WF-NUT-003, WF-NUT-006
Nutrition & Kitchen staff
SCR-NUTRITION-003
Nutrition Screening Form
Nurse
WF-NUT-002
Nursing staff
SCR-NUTRITION-004
Nutrition Assessment
Clinical Dietitian
WF-NUT-002, WF-NUT-005
Clinical Dietitians, Chief Dietitian
SCR-NUTRITION-005
Menu & Meal Plan Manager
Chief Dietitian, Kitchen Manager
WF-NUT-001, WF-NUT-003
Dietetics & Kitchen management
SCR-NUTRITION-006
Kitchen Production Dashboard
Kitchen Manager, Kitchen Staff
WF-NUT-003, WF-NUT-006
Kitchen staff
SCR-NUTRITION-007
Tray Assembly & Delivery
Diet Technician, Kitchen Staff, Nursing Assistant
WF-NUT-003, WF-NUT-004
Tray line & delivery staff
SCR-NUTRITION-008
Nutrition Analytics Dashboard
Chief Dietitian, Quality Officer
All workflows (KPIs)
Nutrition leadership & quality team
Navigation Flow
flowchart LR
A["Clinical Home / Patient Chart"] --> B["SCR-NUTRITION-001<br>Diet Order Entry"]
A --> C["SCR-NUTRITION-003<br>Nutrition Screening Form"]
A --> D["SCR-NUTRITION-004<br>Nutrition Assessment"]
B --> E["SCR-NUTRITION-002<br>Patient Dietary Census"]
C -->|"High/Moderate Risk"| D
D --> E
F["Nutrition Admin Home"] --> G["SCR-NUTRITION-005<br>Menu & Meal Plan Manager"]
F --> H["SCR-NUTRITION-008<br>Nutrition Analytics Dashboard"]
I["Kitchen Home"] --> J["SCR-NUTRITION-006<br>Kitchen Production Dashboard"]
J --> K["SCR-NUTRITION-007<br>Tray Assembly & Delivery"]
E --> J
E --> K
%% ADT / System-driven
L["ADT Events (Scheduling)"] --> E
L --> J
Screen Specifications
SCR-NUTRITION-001: Diet Order Entry
Purpose
Electronic entry and modification of inpatient diet orders (oral, enteral, parenteral parameters) with automatic allergen checks, UAE cultural/religious constraints (halal by default), and linkage to meal planning.
Field Specifications
Field
Type
Required
Validation
Default
Notes
Patient Banner
Read-only strip
Yes
Must have active encounter
—
Standard patient banner (see Common UI Patterns)
Encounter Selector (if multiple)
Dropdown
Conditional
Must select active inpatient encounter
Latest inpatient encounter
Only shown if >1 active encounter
Current Diet Summary
Read-only text
No
—
“No active diet order”
Shows latest active diet order details
Diet Type
Dropdown (searchable)
Yes
FK → diet_type_definitions.diet_type_id; must be active
—
E.g., Regular, Diabetic, Renal, Low Sodium
Texture Modification
Dropdown
No
Must match IDDSI levels master
“Regular”
Values from Texture Modification Levels master data
Fluid Restriction (mL/24h)
Numeric
No
Integer ≥ 0; max configurable per facility
0 (no restriction)
If >0, flagged on tray tickets
Supplements
Multi-select chips
No
Items must exist in menu_items where category = “Supplement”
—
Oral nutrition supplements, high-protein drinks
Enteral/Parenteral Required?
Radio (None/EN/TPN)
Yes
—
None
If EN/TPN selected, show EN/TPN summary + link to EN/TPN order screen (CPOE/PIS)
Cultural / Religious Preference
Multi-select
No
Values from master (Halal, Vegetarian, Vegan, No Beef, No Pork, etc.)
Halal pre-selected (non-editable)
Halal enforced for UAE; others optional
Language Preference
Radio
No
IN (Arabic, English, Both)
From patient profile
Used for printed tray tickets / patient-facing materials
Allergen Display
Read-only badges
Yes
Derived from food_allergen_alerts
—
Highlight severe allergens (e.g., nuts, dairy, gluten)
Special Instructions
Textarea
No
Max 500 chars
—
E.g., “Small frequent meals”, “No spicy food”
Start Date/Time
Datetime picker
Yes
≥ admission time; cannot be > 7 days in past
Now
Used for meal plan generation
End Date/Time
Datetime picker
No
> Start Date/Time
—
Optional; if blank, active until changed/discontinued
Ordering Provider
Read-only
Yes
Must be licensed provider
Logged-in provider
From providers table
Order Status
Read-only
Yes
IN (Draft, Active, On Hold, Discontinued)
Draft
Updated on submit/sign
Reason for Change
Dropdown + text
Conditional
Required if modifying existing active diet
—
For audit (e.g., “Post-op progression”)
Submit / Sign Button
Button
Yes
Disabled if required fields missing
—
Triggers validation & workflow WF-NUT-001
Cancel Button
Button
No
—
—
Returns to previous screen without saving
HTML Wireframe Mockup
Show HTML code HTML <div style="font-family: Arial, sans-serif; max-width: 960px; margin: 0 auto; border: 1px solid #ccc; border-radius: 8px; overflow: hidden;">
<div style="background: #1a73e8; color: white; padding: 12px 20px;">
<h3 style="margin: 0;">Diet Order Entry</h3>
</div>
<!-- Patient Banner -->
<div style="background:#f5f5f5; padding: 10px 20px; border-bottom:1px solid #ddd; display:flex; justify-content:space-between; font-size: 13px;">
<div>
<strong>Ahmed Al-Maktoum</strong> (MRN: 00123456) • Emirates ID: 784-1990-1234567-1
</div>
<div>
Room 502B • Male • 35 yrs • Allergies: <span style="color:#b00020;">Peanuts, Dairy</span>
</div>
</div>
<div style="padding: 20px;">
<!-- Current Diet Summary -->
<div style="margin-bottom: 16px; padding: 10px; background:#f0f4f8; border-radius:4px;">
<strong>Current Diet:</strong> Regular, IDDSI 7 (Regular), No restriction • Started: 07-Feb-2026 08:00
</div>
<!-- Form Grid -->
<div style="display:flex; flex-wrap:wrap; gap:16px;">
<div style="flex:1 1 260px;">
<label for="dietType" style="display:block; font-weight:bold; margin-bottom:4px;">Diet Type *</label>
<select id="dietType" style="width:100%; padding:6px;">
<option>-- Select Diet Type --</option>
<option>Regular</option>
<option>Diabetic (1800 kcal)</option>
<option>Renal (Low Protein)</option>
</select>
</div>
<div style="flex:1 1 260px;">
<label for="texture" style="display:block; font-weight:bold; margin-bottom:4px;">Texture Modification</label>
<select id="texture" style="width:100%; padding:6px;">
<option>Regular (IDDSI 7)</option>
<option>Soft & Bite-Sized (IDDSI 6)</option>
<option>Minced & Moist (IDDSI 5)</option>
<option>Pureed (IDDSI 4)</option>
</select>
</div>
<div style="flex:1 1 200px;">
<label for="fluidRestriction" style="display:block; font-weight:bold; margin-bottom:4px;">Fluid Restriction (mL/24h)</label>
<input id="fluidRestriction" type="number" min="0" style="width:100%; padding:6px;" placeholder="0 = none" />
</div>
</div>
<div style="margin-top:16px; display:flex; flex-wrap:wrap; gap:16px;">
<div style="flex:2 1 360px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Supplements</label>
<div style="border:1px solid #ccc; padding:6px; border-radius:4px; min-height:38px;">
<span style="display:inline-block; padding:2px 6px; margin:2px; background:#e3f2fd; border-radius:12px; font-size:12px;">High Protein Drink</span>
<span style="display:inline-block; padding:2px 6px; margin:2px; background:#e3f2fd; border-radius:12px; font-size:12px;">Renal Supplement</span>
</div>
</div>
<div style="flex:1 1 220px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Cultural / Religious</label>
<div>
<label style="display:block; font-size:13px;"><input type="checkbox" checked disabled /> Halal (required)</label>
<label style="display:block; font-size:13px;"><input type="checkbox" /> Vegetarian</label>
<label style="display:block; font-size:13px;"><input type="checkbox" /> No Beef</label>
</div>
</div>
<div style="flex:1 1 220px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Enteral / Parenteral</label>
<div>
<label style="display:block; font-size:13px;"><input type="radio" name="npType" checked /> None</label>
<label style="display:block; font-size:13px;"><input type="radio" name="npType" /> Enteral (EN)</label>
<label style="display:block; font-size:13px;"><input type="radio" name="npType" /> TPN</label>
</div>
</div>
</div>
<div style="margin-top:16px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Allergens</label>
<div>
<span style="display:inline-block; padding:2px 6px; margin:2px; background:#ffebee; color:#b00020; border-radius:12px; font-size:12px;">Peanuts</span>
<span style="display:inline-block; padding:2px 6px; margin:2px; background:#ffebee; color:#b00020; border-radius:12px; font-size:12px;">Dairy</span>
</div>
</div>
<div style="margin-top:16px; display:flex; flex-wrap:wrap; gap:16px;">
<div style="flex:1 1 220px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Start Date/Time *</label>
<input type="datetime-local" style="width:100%; padding:6px;" />
</div>
<div style="flex:1 1 220px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">End Date/Time</label>
<input type="datetime-local" style="width:100%; padding:6px;" />
</div>
</div>
<div style="margin-top:16px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Special Instructions</label>
<textarea rows="3" style="width:100%; padding:6px;"></textarea>
</div>
<!-- Footer -->
<div style="margin-top:20px; display:flex; justify-content:flex-end; gap:8px;">
<button type="button" style="padding:8px 16px; border:1px solid #999; background:#fff; border-radius:4px;">Cancel</button>
<button type="button" style="padding:8px 16px; border:none; background:#1a73e8; color:#fff; border-radius:4px;">Submit & Sign</button>
</div>
</div>
</div>
Validation Messages
Condition
Message
Severity
No active encounter
“An active inpatient encounter is required to place a diet order.”
Error
Diet Type not selected
“Diet type is required.”
Error
Start Date/Time in past beyond allowed window
“Start date/time cannot be more than 7 days in the past.”
Error
End Date/Time ≤ Start Date/Time
“End date/time must be after the start date/time.”
Error
Fluid Restriction < 0
“Fluid restriction must be zero or a positive value.”
Error
Selected diet conflicts with known food allergen
“Selected diet/menu may contain [allergen]. Please choose an alternative or update instructions.”
Warning (may be hard stop based on policy)
EN/TPN selected but no corresponding EN/TPN order
“Enteral/TPN support selected. Please complete the EN/TPN order in the nutrition support screen.”
Warning
Missing Reason for Change when modifying
“Reason for change is required when modifying an active diet order.”
Error
Submit & Sign
Validates all required fields.
Creates/updates record in diet_orders.
Triggers:
Meal plan generation (meal_plans).
Kitchen production updates (kitchen_production_orders, tray_tickets).
Notifications to nursing.
Cancel
Discards unsaved changes.
Returns to previous screen (patient chart or census).
Link to EN/TPN Order (if EN/TPN selected)
Navigates to EN/TPN ordering workflow (WF-NUT-005 / CPOE integration).
Accessibility (WCAG 2.1 AA)
All inputs have <label> elements; required fields indicated with “*” and aria-required="true".
Error messages displayed inline and associated via aria-describedby.
All allergen warnings announced in an aria-live="assertive" region.
Colour-coded badges (e.g., allergens) also include text labels; colour not sole indicator.
Fully keyboard navigable; logical tab order; visible focus outline.
Responsive / Mobile
On screens < 768px:
Layout collapses to single column; patient banner stacks name and demographics.
Buttons become full-width with increased height (≥ 44px).
Multi-select chips for supplements become vertical list with checkboxes.
On tablets used on wards:
Larger font size (≥ 14px) and touch-friendly controls.
Date/time pickers use native mobile controls where available.
SCR-NUTRITION-002: Patient Dietary Census
Purpose
Real-time view of all inpatients and their diet orders by ward/bed for kitchen planning, tray assembly, and census management.
Field Specifications
Field
Type
Required
Validation
Default
Notes
Facility Filter
Dropdown
Yes
FK → facilities
User’s default facility
Ward/Unit Filter
Dropdown
No
FK → departments / locations
All wards
Meal Type Filter
Dropdown
No
IN (Breakfast, Lunch, Dinner, Snack)
Current upcoming meal
Date Filter
Date picker
Yes
Valid calendar date
Today
Search Patient
Text
No
Min 2 chars
—
Filters by name/MRN/bed
Patient List Table
Table
Yes
—
—
See columns below
Export Button
Button
No
—
—
Export to CSV/PDF for kitchen use
Patient List Table – Key Columns
Column
Description
Bed
Bed/room location (e.g., 5E-12B)
Patient Name
Full name (Arabic/English as per preference)
MRN
Medical record number
Diet Type
Current active diet
Texture
Texture modification level
Fluid Restriction
mL/24h or “None”
Allergens
Icons/badges for key allergens
Meal Status
Planned / Prepared / Delivered / Cancelled
Special Instructions
Truncated text with tooltip for full view
Validation Messages
Condition
Message
Severity
No facility selected
“Please select a facility to view dietary census.”
Error
No records for selected filters
“No patients found for the selected filters.”
Info
ADT data delayed
“Census may be delayed due to ADT update latency. Refresh or contact IT if issue persists.”
Warning
Refresh
Reloads census from ADT and diet orders.
Export
Exports current filtered view for offline reference (no PHI beyond what is necessary; respect UAE PDPL).
Open Diet Order
Clicking a patient row opens SCR-NUTRITION-001 for that patient.
Accessibility
Table uses <th scope="col"> for headers.
Row hover not required; selection indicated by border and aria-selected.
Filters accessible via keyboard; screen reader labels for all filters.
Responsive / Mobile
On small screens, table becomes stacked cards:
Each card shows Bed, Name, Diet, Allergens, Meal Status.
Horizontal scrolling avoided; vertical scroll only.
Purpose
Nursing interface to complete initial nutrition screening (e.g., NRS-2002, MUST), auto-calculate risk, and trigger dietitian referrals.
Field Specifications
Field
Type
Required
Validation
Default
Notes
Patient Banner
Read-only
Yes
Active encounter required
—
Screening Tool
Dropdown
Yes
IN (NRS-2002, MUST, SGA)
Facility default
From Nutrition Screening Tools master
Screening Date/Time
Datetime picker
Yes
≤ now; ≥ admission time
Now
Screened By
Read-only
Yes
Must be user with nutrition_screening permission
Logged-in nurse
Tool-Specific Questions
Various
Yes
Per tool scoring rules
—
E.g., weight loss %, BMI, intake change
Score
Read-only numeric
Yes
Auto-calculated
—
Derived from responses
Risk Level
Read-only badge
Yes
Derived from score
—
Low / Moderate / High
Auto-Refer to Dietitian
Checkbox (locked)
Conditional
Auto-checked if risk ≥ threshold
Based on risk
Creates referral task
Notes
Textarea
No
Max 500 chars
—
Additional clinical context
Save & Close
Button
Yes
—
—
Persists to nutrition_screening
Save & Start Assessment
Button
No
—
—
Opens SCR-NUTRITION-004 if user is dietitian
HTML Wireframe Mockup
Show HTML code HTML <div style="font-family: Arial, sans-serif; max-width: 800px; margin: 0 auto; border: 1px solid #ccc; border-radius: 8px; overflow: hidden;">
<div style="background: #1a73e8; color: white; padding: 12px 20px;">
<h3 style="margin: 0;">Nutrition Screening</h3>
</div>
<div style="background:#f5f5f5; padding: 10px 20px; border-bottom:1px solid #ddd; font-size: 13px;">
<strong>Fatima Al-Nahyan</strong> (MRN: 00987654) • Ward 3C • Admitted: 07-Feb-2026 09:15
</div>
<div style="padding: 20px;">
<div style="display:flex; gap:16px; flex-wrap:wrap; margin-bottom:16px;">
<div style="flex:1 1 220px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Screening Tool *</label>
<select style="width:100%; padding:6px;">
<option>NRS-2002</option>
<option>MUST</option>
<option>SGA</option>
</select>
</div>
<div style="flex:1 1 220px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Screening Date/Time *</label>
<input type="datetime-local" style="width:100%; padding:6px;" />
</div>
</div>
<fieldset style="border:1px solid #ddd; padding:12px; border-radius:4px; margin-bottom:16px;">
<legend style="font-weight:bold;">NRS-2002 Questions</legend>
<div style="margin-bottom:8px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Impaired nutritional status *</label>
<select style="width:100%; padding:6px;">
<option>0 - Normal</option>
<option>1 - Mild</option>
<option>2 - Moderate</option>
<option>3 - Severe</option>
</select>
</div>
<div style="margin-bottom:8px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Severity of disease *</label>
<select style="width:100%; padding:6px;">
<option>0 - Normal</option>
<option>1 - Mild</option>
<option>2 - Moderate</option>
<option>3 - Severe</option>
</select>
</div>
<div style="margin-bottom:8px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Age ≥ 70 years</label>
<label><input type="checkbox" /> Yes</label>
</div>
</fieldset>
<div style="display:flex; gap:16px; flex-wrap:wrap; margin-bottom:16px;">
<div style="flex:1 1 160px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Score</label>
<input type="number" readonly value="3" style="width:100%; padding:6px; background:#f5f5f5;" />
</div>
<div style="flex:1 1 160px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Risk Level</label>
<div style="padding:6px 10px; background:#ffebee; color:#b00020; border-radius:4px;">High Risk</div>
</div>
<div style="flex:2 1 260px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Dietitian Referral</label>
<label><input type="checkbox" checked disabled /> Auto-referral created (High risk)</label>
</div>
</div>
<div style="margin-bottom:16px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Notes</label>
<textarea rows="3" style="width:100%; padding:6px;"></textarea>
</div>
<div style="display:flex; justify-content:flex-end; gap:8px;">
<button type="button" style="padding:8px 16px; border:1px solid #999; background:#fff; border-radius:4px;">Save & Close</button>
<button type="button" style="padding:8px 16px; border:none; background:#1a73e8; color:#fff; border-radius:4px;">Save & Start Assessment</button>
</div>
</div>
</div>
Validation Messages
Condition
Message
Severity
Required question unanswered
“All required screening questions must be completed.”
Error
Screening Date/Time > now
“Screening date/time cannot be in the future.”
Error
Duplicate screening within configured interval
“A screening has already been completed within the last [X] hours. Proceed only if clinically indicated.”
Warning
Save & Close
Saves screening to nutrition_screening.
Updates KPIs (screening compliance).
Save & Start Assessment
Same as Save & Close, then opens SCR-NUTRITION-004 (if user has dietitian role).
Auto-Referral
System creates dietitian task if risk level ≥ configured threshold.
Accessibility
Tool questions grouped in <fieldset> with <legend> for screen readers.
Score and risk level announced via aria-live="polite" when recalculated.
Clear focus order from top to bottom.
Responsive / Mobile
Questions stacked vertically.
Buttons full-width at bottom on small screens.
SCR-NUTRITION-004: Nutrition Assessment
Purpose
Dietitian interface for comprehensive nutrition assessment, including anthropometrics, lab values, dietary history, malnutrition risk, and care plan with calorie/protein targets.
Field Specifications
Field
Type
Required
Validation
Default
Notes
Patient Banner
Read-only
Yes
—
—
Includes latest weight, BMI if available
Assessment Date/Time
Datetime picker
Yes
≤ now
Now
Assessed By
Read-only
Yes
Must have assess_nutrition permission
Logged-in dietitian
Height (cm)
Numeric
No
50–250 cm
—
Weight (kg)
Numeric
Yes
2–300 kg
—
Weight History
Structured inputs
No
—
—
% weight loss over time
BMI
Read-only numeric
Yes
Auto-calculated from height/weight
—
Lab Values
Read-only table
No
—
—
From LIS (albumin, prealbumin, electrolytes, glucose)
Dietary Intake Summary
Textarea
Yes
Max 1000 chars
—
Malnutrition Risk
Dropdown
Yes
IN (None, At Risk, Moderate, Severe)
Derived suggestion from tool
Can override with justification
Calorie Target (kcal/day)
Numeric
Yes
500–6000
—
Protein Target (g/day)
Numeric
Yes
10–400
—
Care Plan Text
Textarea
Yes
Max 2000 chars
—
Interventions, follow-up plan
Reassessment Interval
Dropdown
No
IN (Daily, Every 3 days, Weekly, Other)
Facility default
Next Review Date
Date picker
Conditional
Required if interval = Other
—
Save Draft
Button
No
—
—
Finalize Assessment
Button
Yes
All required fields
—
Locks record, writes to clinical notes
Validation Messages
Condition
Message
Severity
Weight missing
“Current weight is required for nutrition assessment.”
Error
Height missing but BMI required
“Height is required to calculate BMI.”
Error
Calorie/Protein target out of range
“Please verify calorie/protein targets; values appear outside typical clinical range.”
Warning
Finalize without care plan
“Care plan text is required before finalizing assessment.”
Error
Save Draft
Saves partial data to nutrition_assessments with status “Draft”.
Finalize Assessment
Validates required fields.
Sets status “Completed”.
Writes summary note to EHR clinical notes (integration INT-NUT-003).
Updates KPIs (malnutrition documentation, calorie delivery vs target).
Accessibility
Sections separated with headings (e.g., “Anthropometrics”, “Lab Values”, “Care Plan”) for screen reader navigation.
Lab table accessible with proper headers.
Responsive / Mobile
Multi-section form collapses into accordion panels on small screens.
Numeric fields use numeric keypad on mobile.
Purpose
Administrative interface to manage menu items, menu cycles, and preview patient-specific meal plans with nutritional information.
Field Specifications
Field
Type
Required
Validation
Default
Notes
Menu Cycle Selector
Dropdown
Yes
FK → menu_cycles
Active cycle
Day Number
Dropdown
Yes
1–cycle_length_days
1
Meal Type
Dropdown
Yes
IN (Breakfast, Lunch, Dinner, Snack)
Breakfast
Menu Item Library Filter
Text + filters
No
—
—
Filter by name, category, halal/vegetarian, allergens
Menu Item List
Table
Yes
—
—
From menu_items
Nutritional Info Panel
Read-only
No
—
—
Shows calories, macros, allergens
Diet Type Mapping
Multi-select
Yes
At least one diet type
—
Map menu items to diet types
Patient Meal Plan Preview
Panel
No
—
—
Shows example patient tray for selected diet
HTML Wireframe Mockup
Show HTML code HTML <div style="font-family: Arial, sans-serif; max-width: 1100px; margin: 0 auto; border: 1px solid #ccc; border-radius: 8px; overflow: hidden;">
<div style="background: #1a73e8; color: white; padding: 12px 20px;">
<h3 style="margin: 0;">Menu & Meal Plan Manager</h3>
</div>
<div style="padding: 16px;">
<div style="display:flex; flex-wrap:wrap; gap:12px; margin-bottom:12px;">
<div style="flex:1 1 220px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Menu Cycle</label>
<select style="width:100%; padding:6px;">
<option>Winter 4-week Cycle</option>
<option>Summer 4-week Cycle</option>
</select>
</div>
<div style="flex:0 0 120px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Day</label>
<select style="width:100%; padding:6px;">
<option>Day 1</option>
<option>Day 2</option>
</select>
</div>
<div style="flex:0 0 160px;">
<label style="display:block; font-weight:bold; margin-bottom:4px;">Meal Type</label>
<select style="width:100%; padding:6px;">
<option>Breakfast</option>
<option>Lunch</option>
<option>Dinner</option>
</select>
</div>
</div>
<div style="display:flex; flex-wrap:wrap; gap:16px;">
<!-- Left: Menu Item Library -->
<div style="flex:2 1 420px; border:1px solid #ddd; border-radius:4px; padding:8px;">
<div style="margin-bottom:8px;">
<input type="text" placeholder="Search menu items..." style="width:100%; padding:6px;" />
</div>
<table style="width:100%; border-collapse:collapse; font-size:13px;">
<thead>
<tr style="background:#f5f5f5;">
<th style="border-bottom:1px solid #ddd; text-align:left; padding:4px;">Item</th>
<th style="border-bottom:1px solid #ddd; text-align:right; padding:4px;">kcal</th>
<th style="border-bottom:1px solid #ddd; text-align:center; padding:4px;">Halal</th>
<th style="border-bottom:1px solid #ddd; text-align:center; padding:4px;">Allergens</th>
<th style="border-bottom:1px solid #ddd; text-align:center; padding:4px;">Add</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding:4px;">Chicken Harees</td>
<td style="padding:4px; text-align:right;">450</td>
<td style="padding:4px; text-align:center;">✓</td>
<td style="padding:4px; text-align:center;">Gluten</td>
<td style="padding:4px; text-align:center;"><button style="padding:2px 6px;">+</button></td>
</tr>
</tbody>
</table>
</div>
<!-- Right: Nutritional Info & Preview -->
<div style="flex:1 1 320px; display:flex; flex-direction:column; gap:8px;">
<div style="border:1px solid #ddd; border-radius:4px; padding:8px;">
<strong>Nutritional Summary (Meal)</strong>
<div style="font-size:13px; margin-top:4px;">
Calories: 650 kcal • Protein: 25 g • Carbs: 80 g • Fat: 20 g
</div>
</div>
<div style="border:1px solid #ddd; border-radius:4px; padding:8px;">
<strong>Diet Type Mapping</strong>
<div style="font-size:13px; margin-top:4px;">
<label><input type="checkbox" checked /> Regular</label><br/>
<label><input type="checkbox" /> Diabetic</label><br/>
<label><input type="checkbox" /> Renal</label>
</div>
</div>
<div style="border:1px solid #ddd; border-radius:4px; padding:8px;">
<strong>Sample Patient Tray</strong>
<ul style="font-size:13px; padding-left:18px; margin-top:4px;">
<li>Chicken Harees</li>
<li>Arabic Bread</li>
<li>Low-fat Laban</li>
</ul>
</div>
</div>
</div>
<div style="margin-top:12px; text-align:right;">
<button style="padding:8px 16px; border:none; background:#1a73e8; color:#fff; border-radius:4px;">Save Cycle Day</button>
</div>
</div>
</div>
Validation Messages
Condition
Message
Severity
No menu items selected for meal
“At least one menu item must be assigned to this meal.”
Error
Menu item not halal
“All items must be halal-certified for UAE facilities. Please remove non-halal items.”
Error
Menu item mapped to incompatible diet
“Selected item is not allowed for [diet type] based on diet definition.”
Warning
Save Cycle Day
Persists configuration to menu_cycles.
Add Item
Adds menu item to selected meal/day/cycle.
Remove Item
Removes item from meal configuration.
Accessibility
Tables with proper headers.
Checkboxes labelled clearly for screen readers.
Ensure sufficient contrast for nutritional summary text.
Responsive / Mobile
Library and preview stack vertically.
Table rows become cards with “Add” button prominent.
SCR-NUTRITION-006: Kitchen Production Dashboard
Purpose
Operational dashboard for kitchen to view aggregated production requirements per meal service and track preparation status.
Field Specifications
Field
Type
Required
Validation
Default
Notes
Facility
Dropdown
Yes
FK → facilities
User’s facility
Meal Date
Date picker
Yes
Valid date
Today
Meal Type
Dropdown
Yes
IN (Breakfast, Lunch, Dinner, Snack)
Next meal
Production Summary Table
Table
Yes
—
—
Aggregated by menu item
Total Trays
Read-only numeric
Yes
≥ 0
—
From kitchen_production_orders.total_trays
Status
Dropdown
Yes
IN (Planned, In Progress, Completed)
Planned
Completed Date/Time
Datetime
Conditional
Required if status = Completed
—
Production Summary Table – Key Columns
Column
Description
Menu Item
Name of item
Diet Type
Diet types receiving this item
Quantity Required
Number of portions
Prepared Quantity
Editable numeric field
Status
Not started / In progress / Done
Validation Messages
Condition
Message
Severity
Completed without prepared quantities
“Please confirm prepared quantities before marking production as completed.”
Error
Prepared Quantity < Required
“Prepared quantity is less than required. Confirm if this is intentional.”
Warning
Start Production
Sets status to “In Progress”.
Mark Completed
Sets status to “Completed”, records completion time.
Print Production List
Generates printable summary for kitchen.
Accessibility
Large font and high contrast for use in kitchen displays.
Keyboard and mouse/touch friendly.
Responsive / Mobile
Typically used on large screens; on tablets, table scrolls horizontally if needed.
SCR-NUTRITION-007: Tray Assembly & Delivery
Purpose
Tablet-friendly interface for tray line and delivery staff to assemble trays, verify patient identity via barcode, and record delivery and intake.
Field Specifications
Field
Type
Required
Validation
Default
Notes
Meal Date
Date picker
Yes
Valid date
Today
Meal Type
Dropdown
Yes
IN (Breakfast, Lunch, Dinner, Snack)
Current meal
Ward/Route
Dropdown
No
—
All
Delivery route grouping
Tray Ticket List
List/table
Yes
—
—
From tray_tickets
Barcode Scan (Tray)
Text (scanner input)
No
Must match tray ticket barcode
—
Barcode Scan (Patient Wristband)
Text
No
Must match patient identifier
—
Patient Verification Status
Read-only badge
Yes
Match / Mismatch
—
Delivery Status
Dropdown
Yes
IN (Not Delivered, Delivered, Refused, NPO)
Not Delivered
Delivery Time
Datetime
Conditional
Required if Delivered
Now
Intake Recording (%)
Numeric
No
0–100
—
If required by care plan
Satisfaction Score
1–5 rating
No
1–5 integer
—
Optional quick survey
Validation Messages
Condition
Message
Severity
Tray barcode not found
“Tray ticket not found. Please rescan or contact kitchen.”
Error
Patient barcode mismatch
“Patient ID does not match tray ticket. Do NOT deliver. Verify with nurse.”
Error
Delivery marked without time
“Delivery time is required when marking as delivered.”
Error
Intake > 100 or < 0
“Intake must be between 0% and 100%.”
Error
Scan Tray
Focuses tray barcode field; loads tray ticket details.
Scan Patient
Verifies patient identity; updates verification status.
Save Delivery
Saves delivery status, time, intake, satisfaction to meal_service_records.
Next Tray
Moves to next tray in route.
Accessibility
Large buttons and high-contrast design for use in varied lighting.
Support for hardware barcode scanners (enter key triggers).
Responsive / Mobile
Optimized for 7–10 inch tablets.
Single-column layout with large touch targets.
SCR-NUTRITION-008: Nutrition Analytics Dashboard
Purpose
Dashboard for nutrition leadership to monitor KPIs: screening compliance, referral response time, meal satisfaction, tray accuracy, calorie delivery vs target, food waste, malnutrition documentation, TPN order accuracy.
Field Specifications
Field
Type
Required
Validation
Default
Notes
Date Range
Date range picker
Yes
Start ≤ End; within allowed reporting window
Last 30 days
Facility
Dropdown
Yes
FK → facilities
All
Ward/Unit
Multi-select
No
FK → departments
All
KPI Tiles
Cards
Yes
—
—
One per KPI defined in module brief
Trend Charts
Line/bar charts
No
—
—
Time-series per KPI
Export Report
Button
No
—
—
Export aggregated data only (no direct identifiers)
Validation Messages
Condition
Message
Severity
Date range too large
“Please select a date range of up to [X] days to ensure performance.”
Warning
No data for filters
“No data available for the selected period and filters.”
Info
Apply Filters
Refreshes all KPI tiles and charts.
Export
Exports aggregated KPI data (de-identified where applicable) in line with UAE PDPL.
Accessibility
Charts accompanied by data tables for screen readers.
KPI tiles include numeric values and textual descriptions.
Responsive / Mobile
Tiles stack vertically.
Charts simplified or hidden with option to “View full chart” on mobile.
Common UI Patterns
Patient Banner
Displayed on all clinical screens (SCR-NUTRITION-001, 003, 004, 007).
Content:
Name (Arabic + English if available)
MRN
Emirates ID (masked where required by UAE PDPL)
Age, sex
Ward/bed
Key allergies (food and drug)
Code status icon (if provided by EHR)
Behaviour:
Clickable to open full patient summary (from ehr-patient-mgmt).
High contrast; always visible at top.
Search Components
Debounced text search (300–500 ms) with minimum characters (2–3) for:
Patient search (where applicable).
Menu item search in SCR-NUTRITION-005.
Clear button to reset search.
aria-label attributes for screen readers.
Alert / Notification Patterns
Inline Validation Errors
Red text under field, with icon.
Associated via aria-describedby.
Warning Banners
Yellow background bar at top of form for non-blocking warnings (e.g., allergen conflicts).
Critical Alerts
Modal dialog for hard stops (e.g., non-halal item selection).
All alerts respect:
role="alert" or aria-live="assertive" for critical.
aria-live="polite" for informational.
Loading States
Use of skeleton loaders or spinners when:
Fetching census (SCR-NUTRITION-002).
Loading lab values (SCR-NUTRITION-004).
Generating analytics (SCR-NUTRITION-008).
Overlay with semi-transparent background and “Loading…” text.
Ensure loading indicators are keyboard focusable only if interactive (usually not).
Arabic/English Bilingual UI Considerations
All labels and key text stored as translatable strings.
Support for:
English (LTR) and Arabic (RTL) layouts.
Toggle language at user profile level; per-screen language switch optional.
RTL specifics:
Alignment of labels and text fields flips.
Tables maintain logical column order but text alignment adjusts.
Patient-facing elements (e.g., satisfaction questions) available in both languages.
Date/time formats configurable to local preferences (e.g., DD-MM-YYYY).
General Accessibility (WCAG 2.1 AA)
Colour contrast ratio ≥ 4.5:1 for text.
Minimum touch target size 44x44 px on mobile.
Keyboard-only navigation supported on all screens.
Visible focus indicators on all interactive elements.
No information conveyed by colour alone; use icons/text.
Timeouts (if any) clearly communicated and extendable.
Responsive / Mobile Design
Core clinical workflows (diet order entry, screening, tray delivery) optimized for tablets used on wards and in kitchen.
Layout strategy:
Desktop: multi-column forms and tables.
Tablet: two-column where possible, otherwise stacked.
Mobile: single-column, collapsible sections, reduced non-essential data.
Performance:
Pagination or lazy loading for large lists (census, tray tickets).
Avoid heavy charts on low-bandwidth connections; allow user to opt-in.
content/clinical/nutrition/04-screen-requirements.md
Generated 2026-02-20 22:54