Scheduling & Bed/OR Management Screen Requirements

Scheduling & Bed/OR Management Screen Requirements

Screen Inventory

Screen ID Screen Name Primary Actor(s) Workflow(s) Access Level
SCR-SCHEDULING-001 Appointment Search & Booking Scheduling Clerk, Senior Scheduling Clerk, Physician, Patient (Portal) WF-SCH-001, WF-SCH-003, WF-SCH-008 Staff with scheduling rights; patients via portal (limited)
SCR-SCHEDULING-002 Patient Check-In Registration Clerk, Patient (Kiosk) WF-SCH-002 Front-desk, kiosk users
SCR-SCHEDULING-003 Provider Schedule Management Scheduling Administrator, Senior Scheduling Clerk, Department Secretary WF-SCH-001 (supporting), internal admin Admin / power users
SCR-SCHEDULING-004 Bed Board (Real-Time) Bed Management Coordinator, Charge Nurse, Nursing Supervisor WF-SCH-004, WF-SCH-005, WF-SCH-006 Inpatient operations roles
SCR-SCHEDULING-005 Admission / Transfer / Discharge Bed Management Coordinator, Charge Nurse, Physician, Discharge Coordinator WF-SCH-004, WF-SCH-005, WF-SCH-006 Inpatient clinical & bed management
SCR-SCHEDULING-006 OR Schedule Board OR Scheduler, Surgeon, Anesthesiologist, OR Charge Nurse WF-SCH-007 Surgical services roles
SCR-SCHEDULING-007 OR Case Booking OR Scheduler, Surgeon WF-SCH-007 Surgical booking roles
SCR-SCHEDULING-008 Waitlist Management Scheduling Clerk, Senior Scheduling Clerk, Scheduling Administrator WF-SCH-001, WF-SCH-003, WF-SCH-008 Scheduling team
SCR-SCHEDULING-009 Clinic Queue Board Physician, Charge Nurse, Scheduling Clerk WF-SCH-002 Clinic staff; wallboard display
SCR-SCHEDULING-010 Scheduling Analytics Dashboard Scheduling Administrator, Operations Manager, Department Head All workflows (monitoring KPIs) Management / reporting roles

flowchart LR H["Home / Main Menu"] --> A["SCR-SCHEDULING-001<br/>Appointment Search & Booking"] H --> B["SCR-SCHEDULING-002<br/>Patient Check-In"] H --> C["SCR-SCHEDULING-003<br/>Provider Schedule Management"] H --> D["SCR-SCHEDULING-004<br/>Bed Board"] H --> E["SCR-SCHEDULING-006<br/>OR Schedule Board"] H --> F["SCR-SCHEDULING-008<br/>Waitlist Management"] H --> G["SCR-SCHEDULING-010<br/>Scheduling Analytics Dashboard"] %% Appointment flows A -->|"Book"| I["Create Encounter Shell"] A -->|"No slots"| F A -->|"View provider availability"| C B -->|"Checked-in patient"| J["SCR-SCHEDULING-009<br/>Clinic Queue Board"] %% Bed flows D -->|"Select patient"| K["SCR-SCHEDULING-005<br/>Admission / Transfer / Discharge"] K -->|"Admit/Transfer/Discharge saved"| D %% OR flows E -->|"Add/Edit Case"| L["SCR-SCHEDULING-007<br/>OR Case Booking"] L -->|"Save Case"| E %% Waitlist flows F -->|"Book from waitlist"| A %% Analytics G -->|"Drill-down"| A G -->|"Bed metrics"| D G -->|"OR metrics"| E

Screen Specifications

SCR-SCHEDULING-001: Appointment Search & Booking

Purpose

Search for patients and providers, view real-time availability, and book outpatient appointments (including portal self-booking subset).

Field Specifications

Field Type Required Validation Default Notes
Patient Search Text + autocomplete Staff: Optional; Portal: N/A Min 2 chars; match MRN, Emirates ID, name, mobile Empty Staff only; portal uses logged-in patient
Provider Search Text + autocomplete Yes (if specialty not selected) Must match active provider Empty Search by name, license, specialty
Specialty Filter Dropdown Yes (if provider not selected) Must be valid specialty Empty From master data; multi-select allowed
Date Range Date picker (from/to) Yes From ≤ To; range ≤ 90 days From=today; To=today+30 Portal may restrict to 30 days
Appointment Type Dropdown Yes Active appointment type; facility/department scoped None From appointment_types
Facility Filter Dropdown No Must be active facility User’s default facility Multi-facility support
Department Filter Dropdown No Must be active department Filtered by facility
Slot View Mode Toggle (Day/Week/List) Yes Week Persists per user
Available Slots Grid Interactive grid N/A Only bookable slots clickable; enforce scheduling rules Shows time, provider, location, status
Overbooking Indicator Badge N/A Shows current_bookings vs max_overbooking
Reason for Visit Text Recommended Max 250 chars Stored on appointment
Insurance Plan Read-only (portal) / dropdown (staff) Staff: Recommended Must match active coverage From patient record For eligibility checks
Book Button Button N/A Disabled until required fields valid Creates appointment + encounter shell
Add to Waitlist Button Button N/A Disabled unless patient + type selected Opens waitlist dialog
Communication Preference Radio (SMS/Email/Both/None) No From patient profile For notifications
Language Preference Radio (EN/AR) No From patient profile For message language

Validation Messages

Condition Message Severity
No patient selected (staff) "Please select a patient before booking an appointment." Error
No provider or specialty "Select at least a provider or a specialty to search for slots." Error
Date range > 90 days "Date range cannot exceed 90 days." Error
Appointment type missing "Appointment type is required." Error
Slot violates scheduling rule "This slot cannot be booked due to facility scheduling rules: {rule_name}." Error
Overbooking threshold exceeded "Maximum overbooking limit for this slot has been reached." Error
Insurance ineligible "Patient’s insurance is not eligible for this appointment type on the selected date." Warning (allow override with permission)
No slots found "No available slots match your criteria. Adjust filters or add patient to waitlist." Info
Portal: patient tries to book for past date "You cannot book appointments in the past." Error

Actions / Buttons

  • Search Slots: Executes availability search with current filters.
  • Book:
  • Creates appointments row with status booked.
  • Creates/updates encounters row with status planned.
  • Triggers eligibility check (if configured).
  • Sends confirmation via SMS/email in selected language.
  • Add to Waitlist:
  • Opens modal to set priority, preferred dates, acceptable providers.
  • Creates waitlist_entries row.
  • Clear Filters: Resets all filters to defaults.
  • View Provider Schedule: Opens SCR-SCHEDULING-003 pre-filtered for selected provider.

HTML Wireframe Mockup

Show HTML code
HTML
<div style="font-family: Arial, sans-serif; max-width: 1000px; margin: 0 auto; border: 1px solid #ccc; border-radius: 8px; overflow: hidden;">
  <div style="background: #1a73e8; color: white; padding: 12px 20px; display:flex; justify-content:space-between; align-items:center;">
    <h3 style="margin: 0;">Appointment Search &amp; Booking / حجز المواعيد</h3>
    <span style="font-size: 12px;">User: Scheduler · Facility: Dubai General Hospital</span>
  </div>
  <div style="padding: 16px; border-bottom:1px solid #eee;">
    <!-- Patient Banner (collapsed if none selected) -->
    <div style="background:#f5f5f5; padding:8px 12px; border-radius:4px; display:flex; justify-content:space-between; align-items:center;">
      <div>
        <strong>Patient:</strong> <span>Not selected</span>
      </div>
      <button style="padding:6px 10px; font-size:12px;">Search Patient</button>
    </div>
  </div>
  <div style="padding: 16px;">
    <!-- Filters -->
    <div style="display:flex; flex-wrap:wrap; gap:12px; margin-bottom:16px;">
      <div style="flex:1 1 200px;">
        <label>Provider / الطبيب</label><br/>
        <input type="text" style="width:100%; padding:6px;"/>
      </div>
      <div style="flex:1 1 200px;">
        <label>Specialty / التخصص</label><br/>
        <select style="width:100%; padding:6px;">
          <option value="">-- Select --</option>
        </select>
      </div>
      <div style="flex:0 0 150px;">
        <label>From Date</label><br/>
        <input type="date" style="width:100%; padding:6px;"/>
      </div>
      <div style="flex:0 0 150px;">
        <label>To Date</label><br/>
        <input type="date" style="width:100%; padding:6px;"/>
      </div>
      <div style="flex:1 1 200px;">
        <label>Appointment Type / نوع الموعد</label><br/>
        <select style="width:100%; padding:6px;">
          <option value="">-- Select --</option>
        </select>
      </div>
    </div>
    <div style="display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;">
      <div>
        <label>View:</label>
        <button style="margin-left:4px; padding:4px 8px; background:#1a73e8; color:#fff; border:none; border-radius:3px;">Week</button>
        <button style="margin-left:4px; padding:4px 8px;">Day</button>
        <button style="margin-left:4px; padding:4px 8px;">List</button>
      </div>
      <div>
        <button style="padding:6px 12px; margin-right:8px;">Clear</button>
        <button style="padding:6px 12px; background:#1a73e8; color:#fff; border:none; border-radius:3px;">Search Slots</button>
      </div>
    </div>
    <!-- Slots Grid -->
    <div style="border:1px solid #ddd; border-radius:4px; overflow:auto; max-height:400px;">
      <table style="width:100%; border-collapse:collapse; font-size:13px;">
        <thead style="background:#f0f4f8;">
          <tr>
            <th style="padding:8px; border-bottom:1px solid #ddd;">Date</th>
            <th style="padding:8px; border-bottom:1px solid #ddd;">Time</th>
            <th style="padding:8px; border-bottom:1px solid #ddd;">Provider</th>
            <th style="padding:8px; border-bottom:1px solid #ddd;">Location</th>
            <th style="padding:8px; border-bottom:1px solid #ddd;">Status</th>
            <th style="padding:8px; border-bottom:1px solid #ddd;">Overbooking</th>
            <th style="padding:8px; border-bottom:1px solid #ddd;">Action</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td style="padding:6px; border-bottom:1px solid #eee;">2026-02-08</td>
            <td style="padding:6px; border-bottom:1px solid #eee;">09:00–09:15</td>
            <td style="padding:6px; border-bottom:1px solid #eee;">Dr. Ahmed Al-Maktoum</td>
            <td style="padding:6px; border-bottom:1px solid #eee;">OPD 3 · Dubai</td>
            <td style="padding:6px; border-bottom:1px solid #eee;"><span style="color:green;">Available</span></td>
            <td style="padding:6px; border-bottom:1px solid #eee;">0 / 1</td>
            <td style="padding:6px; border-bottom:1px solid #eee;"><button style="padding:4px 8px;">Book</button></td>
          </tr>
        </tbody>
      </table>
    </div>
    <!-- Footer -->
    <div style="margin-top:12px; display:flex; justify-content:space-between; align-items:center;">
      <div>
        <label>Reason for Visit</label><br/>
        <input type="text" style="width:300px; padding:6px;"/>
      </div>
      <div>
        <button style="padding:6px 10px; margin-right:8px;">Add to Waitlist</button>
        <button style="padding:6px 10px;">Close</button>
      </div>
    </div>
  </div>
</div>

Accessibility (WCAG 2.1 AA)

  • All inputs have <label> elements; bilingual labels use lang="ar" spans where needed.
  • Slots grid is a proper <table> with <th scope="col">.
  • Keyboard:
  • Tab order: filters → view toggle → Search → grid.
  • Arrow keys to move between slots (ARIA grid pattern if implemented).
  • Screen reader:
  • Available slots announced with time, provider, location.
  • Overbooking status includes text (e.g., "1 of 2 booked").
  • Colour is not the only indicator; status text used alongside colour.

Responsive / Mobile

  • Filters stack vertically; slot view defaults to List mode.
  • Slot rows become cards with time, provider, and “Book” button full-width.
  • Touch targets ≥ 44px height.
  • Portal view hides advanced filters (facility/department) and simplifies to specialty + date.

SCR-SCHEDULING-002: Patient Check-In

Purpose

Allow front-desk staff and self-service kiosks to check in patients, verify demographics and insurance, and update queue status.

Field Specifications

Field Type Required Validation Default Notes
Identification Method Radio (Emirates ID / MRN / Mobile / QR) Yes One option selected Emirates ID (kiosk) Determines input field
Emirates ID Text / scanner input Conditional Format 784-YYYY-NNNNNNN-C; checksum if available Masked input; kiosk supports card reader
MRN Text Conditional Alphanumeric; must exist Staff only
Mobile Number Text Conditional +971 5X XXX XXXX format Staff only
QR Code Scanner Conditional Must decode to valid token Kiosk only
Appointment List Table N/A Only today’s active appointments Shows time, provider, status
Demographics Verify Checkbox Checkbox Yes Must be checked before completing Unchecked "I confirm patient details are up to date"
Insurance Verify Status Badge N/A From last eligibility check Link to detailed view
Copay Amount Read-only numeric N/A ≥ 0 From billing rules Staff only
Copay Collected Numeric input Conditional ≥ 0; ≤ Copay Amount 0 Staff only
Payment Method Dropdown Conditional Required if Copay Collected > 0 Cash, Card, Online
Check-In Button Button N/A Disabled until appointment selected & demographics verified Sets status to checked_in
Queue Number Read-only N/A Auto-assigned Displayed after check-in
Estimated Wait Time Read-only N/A Calculated from queue Displayed after check-in

Validation Messages

Condition Message Severity
Invalid Emirates ID format "Please enter a valid Emirates ID in the format 784-YYYY-NNNNNNN-C." Error
No appointments found "No appointments found for today with the provided information." Info
Demographics not verified "Please confirm that patient demographics have been reviewed." Error
Copay collected > copay amount "Collected amount cannot exceed required co-payment." Error
Payment method missing "Select a payment method for the collected co-payment." Error
Appointment already checked in "This appointment has already been checked in." Warning

Actions / Buttons

  • Search / Identify: Finds today’s appointments for the patient.
  • Check-In:
  • Updates appointment status to checked_in.
  • Activates encounter (status in_progress).
  • Generates queue number and updates SCR-SCHEDULING-009.
  • Print Queue Ticket (staff/kiosk):
  • Prints queue number, clinic, and QR code.
  • Update Demographics: Opens patient demographics screen (from EHR module).

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;">
  <div style="background:#1a73e8; color:#fff; padding:12px 20px;">
    <h3 style="margin:0;">Patient Check-In / تسجيل الوصول</h3>
  </div>
  <div style="padding:16px;">
    <!-- Identification -->
    <fieldset style="border:none; margin:0 0 12px 0; padding:0;">
      <legend style="font-weight:bold;">Identify Patient</legend>
      <label><input type="radio" name="id_method" checked/> Emirates ID</label>
      <label style="margin-left:12px;"><input type="radio" name="id_method"/> MRN</label>
      <label style="margin-left:12px;"><input type="radio" name="id_method"/> Mobile</label>
      <label style="margin-left:12px;"><input type="radio" name="id_method"/> QR Code</label>
    </fieldset>
    <div style="margin-bottom:12px;">
      <label>Emirates ID / رقم الهوية الإماراتية</label><br/>
      <input type="text" style="width:260px; padding:6px;" placeholder="784-YYYY-NNNNNNN-C"/>
      <button style="margin-left:8px; padding:6px 10px;">Search</button>
    </div>
    <!-- Appointment List -->
    <div style="border:1px solid #ddd; border-radius:4px; max-height:220px; overflow:auto; margin-bottom:12px;">
      <table style="width:100%; border-collapse:collapse; font-size:13px;">
        <thead style="background:#f0f4f8;">
          <tr>
            <th style="padding:6px; border-bottom:1px solid #ddd;">Time</th>
            <th style="padding:6px; border-bottom:1px solid #ddd;">Provider</th>
            <th style="padding:6px; border-bottom:1px solid #ddd;">Clinic</th>
            <th style="padding:6px; border-bottom:1px solid #ddd;">Status</th>
            <th style="padding:6px; border-bottom:1px solid #ddd;">Select</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td style="padding:6px; border-bottom:1px solid #eee;">09:30</td>
            <td style="padding:6px; border-bottom:1px solid #eee;">Dr. Fatima Al-Nahyan</td>
            <td style="padding:6px; border-bottom:1px solid #eee;">Family Medicine</td>
            <td style="padding:6px; border-bottom:1px solid #eee;">Booked</td>
            <td style="padding:6px; border-bottom:1px solid #eee;"><input type="radio" name="appt_select"/></td>
          </tr>
        </tbody>
      </table>
    </div>
    <!-- Verification & Payment -->
    <div style="margin-bottom:8px;">
      <label><input type="checkbox"/> I confirm demographics &amp; contact details are up to date.</label>
    </div>
    <div style="display:flex; justify-content:space-between; align-items:flex-start; gap:16px;">
      <div style="flex:1;">
        <div style="margin-bottom:6px;">
          <strong>Insurance:</strong> Daman Enhanced · <span style="color:green;">Eligible</span>
        </div>
        <div>
          <strong>Copay:</strong> AED 50<br/>
          <label>Collected</label><br/>
          <input type="number" style="width:100px; padding:4px;"/> 
          <select style="padding:4px; margin-left:4px;">
            <option value="">Payment Method</option>
          </select>
        </div>
      </div>
      <div style="text-align:right;">
        <button style="padding:6px 10px; margin-right:8px;">Cancel</button>
        <button style="padding:6px 14px; background:#1a73e8; color:#fff; border:none; border-radius:3px;">Check-In</button>
      </div>
    </div>
    <!-- Result -->
    <div style="margin-top:12px; padding:8px 10px; background:#f0f4f8; border-radius:4px;">
      <strong>Queue Number:</strong> A023 · <strong>Estimated Wait:</strong> 15 minutes
    </div>
  </div>
</div>

Accessibility

  • Radio groups and checkboxes use <fieldset> and <legend>.
  • Error messages appear inline and are referenced via aria-describedby.
  • Kiosk mode uses large fonts and buttons; supports on-screen keyboard.
  • Screen reader announces queue number and estimated wait via aria-live="polite".

Responsive / Mobile

  • Identification methods stack vertically.
  • Appointment table becomes a list of cards with “Select” button.
  • Payment section collapses into an accordion on small screens.

SCR-SCHEDULING-003: Provider Schedule Management

Purpose

Define and manage provider availability, recurring templates, and session blocks used to generate appointment slots.

Field Specifications

Field Type Required Validation Default Notes
Provider Selector Autocomplete dropdown Yes Must be active provider Required to load schedule
Week View Date Date picker Yes Current week Monday Controls week displayed
Session Blocks Visual blocks N/A Represent clinic sessions
Block Time (Start/End) Time picker Yes Start < End; within facility hours For new/edited blocks
Session Type Dropdown Yes Valid session type Clinic e.g., OPD, Telehealth
Max Patients Numeric Yes > 0; ≤ facility max 20 Used to generate slots
Recurring Templates Dropdown No From scheduling_templates
Apply Template Button Button N/A Disabled until template selected Applies pattern to week
Holiday / Closure Overlay Read-only N/A From holiday calendar
Override Dates Date range No From ≤ To For temporary changes
Save Schedule Button N/A Disabled if validation fails Writes to provider_schedules & appointment_slots

Validation Messages

Condition Message Severity
Overlapping session blocks "Session overlaps with an existing block on {date} {time}." Error
Block outside facility hours "Block time is outside facility operating hours." Error
Max patients too high "Max patients exceeds allowed limit for this session type." Error
Template conflicts with holiday "Template includes sessions on a facility closure day: {date}." Warning

Actions / Buttons

  • Add Block: Opens dialog to define new session block.
  • Edit Block: Adjusts existing block; updates future slots.
  • Apply Template: Applies weekly pattern; prompts before overwriting.
  • Save Schedule: Persists changes and regenerates slots as needed.

Accessibility

  • Week view supports keyboard navigation (arrow keys between days).
  • Blocks have text labels (e.g., "AM Clinic (20 slots)") and high-contrast colours.
  • Screen reader announces block details on focus.

Responsive / Mobile

  • Week view switches to one-day-at-a-time with swipe or arrows.
  • Block list appears below calendar as a list.

SCR-SCHEDULING-004: Bed Board (Real-Time)

Purpose

Provide real-time view of bed occupancy, status, and cleaning, enabling bed assignment and monitoring.

Field Specifications

Field Type Required Validation Default Notes
Facility Selector Dropdown Yes Active facility User default Filters board
Ward / Unit Filter Multi-select No All From departments / locations
View Mode Toggle (Floor Plan / List) Yes Floor Plan User preference
Bed Status Legend Static N/A Shows colours & meanings
Bed Status Grid Interactive N/A Each bed tile shows number, status, patient
Patient Info Hover Tooltip N/A Name, age, gender, LOS, isolation
Pending Admissions Panel List N/A From admission orders
Pending Discharges Panel List N/A From discharge orders
Cleaning Status Badge N/A From cleaning system
Occupancy Stats Read-only N/A Calculated per ward/facility
Filter: Gender Dropdown No IN (All, Male, Female) All For bed compatibility
Filter: Isolation Checkbox No Off Show isolation beds only

Validation Messages

Condition Message Severity
No beds configured "No beds configured for selected facility/ward." Info
Real-time feed disconnected "Real-time updates unavailable. Displaying last refreshed data at {time}." Warning

Actions / Buttons

  • Assign Bed (from pending admission):
  • Opens SCR-SCHEDULING-005 with selected patient and suggested beds.
  • Transfer (from bed tile):
  • Opens SCR-SCHEDULING-005 in transfer mode.
  • Refresh:
  • Manual refresh in addition to auto-refresh.

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;">
  <div style="background:#1a73e8; color:#fff; padding:12px 20px;">
    <h3 style="margin:0;">Bed Board / لوحة الأسرة</h3>
  </div>
  <div style="padding:12px; border-bottom:1px solid #eee; display:flex; justify-content:space-between; align-items:center;">
    <div>
      <label>Facility</label>
      <select style="margin-right:8px;">
        <option>Dubai General Hospital</option>
      </select>
      <label>Ward</label>
      <select>
        <option>All</option>
      </select>
    </div>
    <div>
      <label>View:</label>
      <button style="margin-left:4px; padding:4px 8px; background:#1a73e8; color:#fff; border:none; border-radius:3px;">Floor Plan</button>
      <button style="margin-left:4px; padding:4px 8px;">List</button>
      <button style="margin-left:8px; padding:4px 8px;">Refresh</button>
    </div>
  </div>
  <div style="padding:12px; display:flex; gap:12px;">
    <!-- Left: Bed grid -->
    <div style="flex:2; border:1px solid #ddd; border-radius:4px; padding:8px; min-height:300px;">
      <div style="margin-bottom:8px; font-size:12px;">
        <strong>Legend:</strong>
        <span style="display:inline-block; width:12px; height:12px; background:#4caf50; margin:0 4px;"></span>Occupied
        <span style="display:inline-block; width:12px; height:12px; background:#ffeb3b; margin:0 4px;"></span>Pending Discharge
        <span style="display:inline-block; width:12px; height:12px; background:#f44336; margin:0 4px;"></span>Isolation
        <span style="display:inline-block; width:12px; height:12px; background:#9e9e9e; margin:0 4px;"></span>Cleaning
      </div>
      <div style="display:grid; grid-template-columns:repeat(6, 1fr); gap:6px;">
        <div style="border:1px solid #ccc; border-radius:3px; padding:4px; background:#4caf50; color:#fff; font-size:11px;">
          <div><strong>Bed 101</strong></div>
          <div>Ahmed A.</div>
          <div>LOS: 2d</div>
        </div>
        <div style="border:1px solid #ccc; border-radius:3px; padding:4px; background:#9e9e9e; font-size:11px;">
          <div><strong>Bed 102</strong></div>
          <div>Cleaning</div>
        </div>
      </div>
    </div>
    <!-- Right: Panels -->
    <div style="flex:1; display:flex; flex-direction:column; gap:8px;">
      <div style="border:1px solid #ddd; border-radius:4px; padding:8px; max-height:150px; overflow:auto;">
        <strong>Pending Admissions</strong>
        <ul style="padding-left:16px; font-size:12px;">
          <li>MRN 12345 · ED → Ward 3A · Female · Isolation</li>
        </ul>
      </div>
      <div style="border:1px solid #ddd; border-radius:4px; padding:8px; max-height:150px; overflow:auto;">
        <strong>Pending Discharges</strong>
        <ul style="padding-left:16px; font-size:12px;">
          <li>Bed 201 · Discharge before 12:00 target</li>
        </ul>
      </div>
      <div style="border:1px solid #ddd; border-radius:4px; padding:8px; font-size:12px;">
        <strong>Occupancy</strong><br/>
        Ward 3A: 24 / 28 (86%)<br/>
        Facility: 180 / 220 (82%)
      </div>
    </div>
  </div>
</div>

Accessibility

  • Bed tiles have role="button" and aria-label describing bed, patient, and status.
  • Keyboard navigation through beds using Tab; arrow navigation optional.
  • Colour-coded statuses always accompanied by text.

Responsive / Mobile

  • Floor plan grid reduces columns (e.g., 2 per row).
  • Right-hand panels stack below bed grid.
  • List view becomes default on small screens.

SCR-SCHEDULING-005: Admission / Transfer / Discharge

Purpose

Unified screen to manage inpatient admission, bed assignment, transfers, and discharge, including ADT triggers.

Field Specifications

Field Type Required Validation Default Notes
Mode Tabs (Admit / Transfer / Discharge) Yes Based on entry Controls visible fields
Patient Info Read-only banner Yes Shows MRN, Emirates ID, allergies, isolation
Encounter Details Read-only / editable Yes Encounter must exist or be created Type, class, attending provider
Bed Selector Dropdown + search Admit/Transfer Must be compatible (gender, isolation, ward type) Suggested bed From beds with rules
Transfer Reason Dropdown + text Transfer Required; from reason codes For audit and NABIDH/Malaffi
Admission Source Dropdown Admit Required e.g., ED, Clinic, Transfer
Discharge Checklist Items Checkboxes Discharge Some items required per policy E.g., meds reconciled, instructions given
Disposition Dropdown Discharge Required From discharge dispositions master
ADT Triggers Summary Read-only N/A Shows message type (A01/A02/A03)
Effective Date/Time Datetime picker Yes Cannot be future beyond allowed window Now For admit/transfer/discharge time
Notes Textarea No Max 500 chars Internal notes
Save & Generate ADT Button N/A Disabled until required fields valid Sends ADT to downstream systems

Validation Messages

Condition Message Severity
No bed selected (admit) "Select a bed to complete admission." Error
Bed incompatible "Selected bed is not compatible with patient gender/isolation requirements." Error
Disposition missing "Discharge disposition is required." Error
Checklist incomplete "All mandatory discharge checklist items must be completed." Error
ADT integration failure "ADT message could not be delivered. Please retry or contact IT support." Error

Actions / Buttons

  • Admit:
  • Creates inpatient encounter (status admitted).
  • Creates bed_assignments row.
  • Sends ADT A01 to EHR, billing, NABIDH/Malaffi, nutrition, cleaning.
  • Transfer:
  • Updates bed_assignments (release + new).
  • Creates bed_transfers row.
  • Sends ADT A02; triggers cleaning for vacated bed.
  • Discharge:
  • Sets encounter status discharged.
  • Releases bed; triggers cleaning.
  • Sends ADT A03; notifies billing and portal.

Accessibility

  • Tabbed modes implemented with ARIA tab roles.
  • Checklist items have clear labels; mandatory items indicated with text, not colour alone.
  • ADT status messages announced via aria-live.

Responsive / Mobile

  • Layout becomes vertical: patient banner → mode tabs → form.
  • Bed selector uses full-screen modal list on mobile.

SCR-SCHEDULING-006: OR Schedule Board

Purpose

Gantt-style view of OR rooms and cases for a day, enabling OR schedulers to manage utilisation and rescheduling.

Field Specifications

Field Type Required Validation Default Notes
Date Selector Date picker Yes Today Controls schedule day
OR Room Lanes Timeline lanes N/A One lane per OR room
Case Blocks Draggable blocks N/A Cannot overlap beyond rules; respect cleaning time Represent or_cases
Surgeon Name Display N/A On case block
Procedure Display N/A CPT code + description
Estimated Time Display N/A From estimated_duration
Status Indicators Badge/colour N/A Scheduled, In Progress, Completed, Cancelled, Delayed
Add Case Button Button N/A Opens SCR-SCHEDULING-007
Utilisation Bar Read-only N/A Shows % utilisation per room

Validation Messages

Condition Message Severity
Case moved into conflict "This move causes an overlap with another case in {room}." Error
Case moved outside OR hours "Selected time is outside configured OR operating hours." Error
Cleaning time violated "Insufficient turnover time between cases. Minimum required: {minutes} minutes." Error

Actions / Buttons

  • Add Case: Opens OR Case Booking with selected room/time.
  • Drag to Reschedule: Updates case start/end times; may notify team/patient.
  • Zoom In/Out: Adjusts timeline granularity.

Accessibility

  • Cases listed in an accessible table below the Gantt for screen readers.
  • Drag-and-drop operations have keyboard alternatives (e.g., "Move earlier/later by 15 minutes").

Responsive / Mobile

  • Timeline simplifies to a vertical list of cases grouped by OR room.
  • Editing/rescheduling done via forms rather than drag-and-drop.

SCR-SCHEDULING-007: OR Case Booking

Purpose

Capture all details required to book a surgical case, including procedure, team, equipment, and pre-op checks.

Field Specifications

Field Type Required Validation Default Notes
Patient Info Read-only banner Yes From patient/encounter
Procedure Search (CPT) Autocomplete Yes Valid CPT code; active From surgical procedure master
Procedure Description Read-only Yes From CPT Can be overridden with free text (optional)
Surgeon Dropdown / autocomplete Yes Must have surgical privileges From providers
Anesthesiologist Dropdown / autocomplete Yes Must have anesthesia privileges
Duration Estimate Numeric (minutes) Yes > 0; ≤ max allowed From template Used in OR board
OR Room Selector Dropdown Yes Active OR room; supports "Any" Suggested From or_rooms
Date & Time Datetime picker Yes Within OR hours; no conflict
Equipment Needs Multi-select + text No From equipment master; free-text notes
Implants Required Checkbox + text No For inventory prep
Pre-Op Checklist Status Read-only N/A From pre-op module; shows complete/incomplete
Consent Verified Checkbox Yes Must be checked before final booking (or flagged) Unchecked May allow provisional booking
Requires Pre-Auth Badge N/A From insurance rules
Save Case Button N/A Disabled until required fields valid Creates/updates or_cases

Validation Messages

Condition Message Severity
Missing procedure "Select a procedure code to continue." Error
Surgeon not available "Selected surgeon is not available at this time." Error
OR room conflict "Selected OR room is not available at the chosen time." Error
Pre-op checklist incomplete "Pre-operative checklist is incomplete. Proceeding may require approval." Warning
Consent not verified "Surgical consent must be verified before finalising the booking." Error (configurable as soft/hard)

Actions / Buttons

  • Save as Draft: Stores case without OR room/time (optional).
  • Save & Schedule: Commits case to OR Schedule Board.
  • Cancel: Discards unsaved changes.

Accessibility

  • Procedure search supports keyboard and screen reader with clear instructions.
  • Error messages summarised at top of form and linked to fields.

Responsive / Mobile

  • Form becomes single-column; non-essential sections (equipment) in collapsible panels.
  • Date/time picker uses mobile-friendly controls.

SCR-SCHEDULING-008: Waitlist Management

Purpose

Manage waitlisted patients for appointments or beds, including prioritisation and automated offers.

Field Specifications

Field Type Required Validation Default Notes
Waitlist Type Filter Dropdown No Appointments Appointments / Beds / OR
Specialty / Service Filter Dropdown No For appointments
Waitlist Queue Table N/A Shows patient, priority, days waiting
Priority Indicator Badge N/A Urgent, Routine, etc.
Days Waiting Calculated N/A today - added_datetime
Preferred Dates Display N/A From waitlist_entries
Offer Status Badge N/A Not Offered / Offered / Accepted / Declined / Expired
Auto-Offer Toggle Switch No Off Enables automatic offers for selected row(s)
Bulk Offer Button Button N/A Disabled if no rows selected Sends offers to multiple patients

Validation Messages

Condition Message Severity
No entries match filters "No waitlist entries match the selected criteria." Info
Auto-offer without contact details "Cannot enable auto-offer: patient has no valid SMS or email contact." Error

Actions / Buttons

  • Offer Slot: Opens booking dialog (SCR-SCHEDULING-001) with selected patient and slot.
  • Enable Auto-Offer: System automatically sends offers when slots free up.
  • Mark Resolved: Sets resolution type (Booked/Cancelled/No Response).

Accessibility

  • Table supports sorting via keyboard; sort order announced to screen readers.
  • Priority indicated by text and icon, not colour alone.

Responsive / Mobile

  • Table becomes list of cards; key fields (priority, days waiting, status) shown prominently.
  • Bulk actions hidden or simplified.

SCR-SCHEDULING-009: Clinic Queue Board

Purpose

Display real-time queue of checked-in patients for a clinic, for providers and wall-mounted displays.

Field Specifications

Field Type Required Validation Default Notes
Clinic / Provider Filter Dropdown Yes User’s clinic Determines queue
Checked-In Patients Table N/A Shows queue order
Queue Number Display N/A From check-in
Wait Time Calculated N/A Current wait vs target
Provider Status Badge N/A In Room, On Break, Not Available
Room Status Badge N/A Ready, Cleaning, Occupied
Next Patient Button Button N/A Moves next patient to "In Room"

Validation Messages

Condition Message Severity
No patients in queue "No patients currently waiting." Info

Actions / Buttons

  • Call Next Patient: Updates queue status; may trigger display/announcement.
  • Skip / Reorder (with permission): Adjusts queue order.

Accessibility

  • Wallboard mode: high contrast, large fonts.
  • Provider desktop mode: supports keyboard and screen reader.

Responsive / Mobile

  • Queue table becomes vertical list; “Next Patient” button fixed at bottom for providers.

SCR-SCHEDULING-010: Scheduling Analytics Dashboard

Purpose

Provide KPIs and trends for appointments, beds, and OR utilisation.

Field Specifications

Field Type Required Validation Default Notes
Date Range Date range picker Yes From ≤ To; max 12 months Last 30 days
Facility / Department Filters Multi-select No All
Appointment Volume Chart Chart N/A By day/week
No-Show Rate KPI tile N/A From appointments
Wait Times Chart N/A From check-in data
Bed Occupancy Chart N/A From beds/assignments
OR Utilisation Chart N/A From OR cases
Cancellation Trends Chart N/A By reason

Actions / Buttons

  • Drill Down: Opens underlying lists (appointments, encounters).
  • Export: CSV/PDF export of selected metrics.

Accessibility

  • Charts have data tables accessible to screen readers.
  • Colour palettes meet contrast requirements; patterns used in addition to colour.

Responsive / Mobile

  • Tiles stack; charts become swipeable.
  • Some complex charts replaced with summary numbers on very small screens.

Common UI Patterns

Patient Banner

  • Displayed on all patient-specific screens (SCR-SCHEDULING-001, 002, 005, 007).
  • Fields:
  • Name (EN/AR), age, gender
  • MRN, Emirates ID
  • Contact (mobile), primary language
  • Key alerts: allergies, isolation, fall risk
  • Behaviour:
  • Clickable to open full demographics (EHR module).
  • High contrast; icons + text for alerts.
  • Bilingual labels: e.g., "Allergies / الحساسية".

Search Components

  • Standardised search bar with:
  • Debounced autocomplete (300–500 ms).
  • Minimum characters (2–3) before search.
  • Clear button (×) inside input.
  • Results:
  • Tabular with sortable columns.
  • Keyboard support: Up/Down to navigate, Enter to select.

Alert / Notification Patterns

  • Inline Validation: Red text below field, with icon and aria-describedby.
  • Toast Notifications: For non-blocking success/info; appear top-right, auto-dismiss.
  • Modal Alerts: For critical actions (e.g., ADT failure, bed incompatibility).
  • Severity levels:
  • Info (blue), Warning (amber), Error (red), Success (green).
  • Text always describes issue; colour is supplementary.

Loading States

  • Skeleton loaders for tables and grids.
  • Spinners with text: "Loading appointments…" / "Updating bed board…".
  • For real-time boards (beds, queue), subtle "Last updated at HH:MM" label.

Arabic/English Bilingual UI

  • All labels and key buttons support EN/AR text; AR text wrapped with lang="ar" and right-aligned where appropriate.
  • Layout:
  • For English UI, left-to-right; for Arabic UI, right-to-left mirroring (including tables where feasible).
  • Date/time formats:
  • Displayed as DD/MM/YYYY HH:mm by default; locale-aware.
  • Validation messages:
  • Ideally bilingual or per-user language preference; structure supports both.

Accessibility (WCAG 2.1 AA) – Cross-Cutting

  • Keyboard:
  • All interactive elements reachable via Tab.
  • Visible focus indicator.
  • Screen reader:
  • Landmarks (role="main", role="navigation").
  • ARIA labels for icons and status badges.
  • Live regions for dynamic updates (queue changes, bed status).
  • Contrast:
  • Text contrast ratio ≥ 4.5:1.
  • Large text and icons ≥ 3:1.
  • Forms:
  • Labels explicitly associated with inputs.
  • Error summary at top for complex forms (e.g., OR Case Booking).

Responsive / Mobile – Cross-Cutting

  • Breakpoints:
  • ≥ 1024px: full desktop layout.
  • 768–1023px: tablet; some side panels stack.
  • < 768px: single-column layouts; tables → cards.
  • Touch:
  • Buttons and interactive elements ≥ 44×44 px.
  • Avoid hover-only interactions; provide tap equivalents.

These screen requirements should be implemented in alignment with UAE PDPL (data minimisation, purpose limitation) and local authority guidelines (DHA/DOH/MOH) for patient data display and access control.

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