Billing & Claims Management Screen Requirements

Billing & Claims Management Screen Requirements

Screen Inventory

Screen ID Screen Name Primary Actor(s) Workflow(s) Access Level
SCR-BILLINGCLAIMS-001 Charge Review Worklist Charge Entry Clerk, Revenue Cycle Manager WF-BIL-001 Users with enter_charges, edit_charges, correct_charge_errors
SCR-BILLINGCLAIMS-002 Claim Generation & Scrubbing Billing Specialist, Revenue Cycle Manager WF-BIL-002 Users with generate_claims, scrub_claims, configure_claim_edits
SCR-BILLINGCLAIMS-003 Claim Submission Tracker Billing Specialist, Revenue Cycle Manager WF-BIL-003 Users with submit_claims, manage_claim_worklist
SCR-BILLINGCLAIMS-004 Payment Posting Payment Poster, AR Specialist, Revenue Cycle Manager WF-BIL-004 Users with post_payments, reconcile_payments
SCR-BILLINGCLAIMS-005 Patient Account & Billing Patient Billing Specialist, Cashier, Revenue Cycle Manager WF-BIL-005, WF-BIL-007 Users with manage_patient_accounts, process_patient_payments
SCR-BILLINGCLAIMS-006 AR Aging Dashboard AR Specialist, Revenue Cycle Manager WF-BIL-004, WF-BIL-006 Users with manage_ar_aging, generate_ar_reports, view_financial_dashboards
SCR-BILLINGCLAIMS-007 Denial Worklist Denial Specialist, AR Specialist, Revenue Cycle Manager WF-BIL-006 Users with manage_denials, prepare_appeals, submit_appeals
SCR-BILLINGCLAIMS-008 Revenue Dashboard Revenue Cycle Manager, Finance WF-BIL-001–007 Users with view_financial_dashboards
SCR-BILLINGCLAIMS-009 Cashier / POS Collection Cashier, Patient Billing Specialist WF-BIL-007, WF-BIL-005 Users with collect_payments, issue_receipts

flowchart LR H["RCM Home / Billing Menu"] --> A["SCR-BILLINGCLAIMS-001<br/>Charge Review Worklist"] H --> B["SCR-BILLINGCLAIMS-002<br/>Claim Generation & Scrubbing"] H --> C["SCR-BILLINGCLAIMS-003<br/>Claim Submission Tracker"] H --> D["SCR-BILLINGCLAIMS-004<br/>Payment Posting"] H --> E["SCR-BILLINGCLAIMS-005<br/>Patient Account & Billing"] H --> F["SCR-BILLINGCLAIMS-006<br/>AR Aging Dashboard"] H --> G["SCR-BILLINGCLAIMS-007<br/>Denial Worklist"] H --> I["SCR-BILLINGCLAIMS-008<br/>Revenue Dashboard"] H --> J["SCR-BILLINGCLAIMS-009<br/>Cashier / POS Collection"] %% Charge → Claim A -->|"All charges reviewed"| B B -->|"Claims marked ready"| C %% Submission → Payment C -->|"Payer adjudication"| D D -->|"Patient responsibility created"| E %% AR & Denials D -->|"Outstanding balances"| F D -->|"Denied/underpaid"| G G -->|"Appeal submitted"| C %% Patient-facing E -->|"Collect at counter"| J J -->|"Payment posted"| E %% Dashboards A --> I B --> I C --> I D --> I F --> I G --> I

Screen Specifications

SCR-BILLINGCLAIMS-001: Charge Review Worklist

Purpose

Worklist for reviewing, correcting, and approving charges generated from clinical systems before claim generation. Supports automated charge capture validation and manual edits.

Field Specifications

Field Type Required Validation Default Notes
Department Filter Dropdown No Must match existing departments.department_id User’s default department Multi-select allowed
Date Range Date range picker Yes fromto; max 31 days span Today Filters by service date
Charge Status Filter Multi-select dropdown No Values in (Pending, Error, Approved, On Hold) Pending, Error Drives worklist
Encounter List Table Shows encounters with at least one charge in scope
Patient Name Text (in table) From patients (read-only)
Emirates ID Text (in table) Format 784-YYYY-NNNNNNN-C Masked except last 3 digits for PDPL where configured
Encounter ID Text (in table) Must exist in encounters Click opens encounter charge detail
Service Date Date (in table) Valid date From charges.service_date
Charges Count Integer (in table) ≥ 0 Number of charges per encounter
Charge Status Badge (in table) Enum Worst status among charges (e.g., if any Error → Error)
Edit Errors Icon / count Hover shows summary of errors
CPT Code Text input (per charge row) Yes Valid CPT; exists in CDM From auto-mapping Editable inline
ICD-10-AM Codes Multi-select autocomplete Yes Codes must exist in ICD-10-AM master From encounter diagnoses Used for medical necessity
Modifier Codes Multi-select dropdown No Valid CPT/HCPCS modifiers From rules Inline chips
Quantity Numeric input Yes > 0; integer 1
Charge Amount (AED) Numeric input Yes ≥ 0; 2 decimals From contracted rate Editable if user has permission
Contracted Rate (AED) Read-only ≥ 0 From fee schedule Tooltip shows payer/plan
Source Module Read-only text From integration e.g., CPOE, RIS, LIS
Error Details Expandable panel Lists triggered claim/charge edits
Approve Selected Button Enabled if at least one charge selected & no blocking errors Sets status to Approved
Put On Hold Button Requires hold reason For investigation

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; display:flex; justify-content:space-between; align-items:center;">
    <h3 style="margin: 0;">Charge Review Worklist / قائمة مراجعة الرسوم</h3>
    <div style="font-size: 12px;">Facility: Dubai General Hospital</div>
  </div>
  <div style="padding: 16px;">
    <!-- Filters -->
    <div style="display:flex; flex-wrap:wrap; gap:12px; margin-bottom: 12px;">
      <div style="flex:1 1 180px;">
        <label>Department / القسم</label><br/>
        <select style="width:100%; padding:4px;">
          <option>All</option>
          <option>Radiology</option>
          <option>Laboratory</option>
        </select>
      </div>
      <div style="flex:1 1 220px;">
        <label>Date Range / نطاق التاريخ</label><br/>
        <input type="date" style="padding:4px; width:48%;"> -
        <input type="date" style="padding:4px; width:48%;">
      </div>
      <div style="flex:1 1 200px;">
        <label>Status / الحالة</label><br/>
        <select multiple style="width:100%; padding:4px; height:60px;">
          <option selected>Pending</option>
          <option selected>Error</option>
          <option>Approved</option>
          <option>On Hold</option>
        </select>
      </div>
      <div style="flex:0 0 120px; align-self:flex-end;">
        <button style="width:100%; padding:6px 8px; background:#1a73e8; color:#fff; border:none; border-radius:4px;">Apply</button>
      </div>
    </div>

    <!-- Worklist Table -->
    <table style="width:100%; border-collapse:collapse; font-size:13px;">
      <thead>
        <tr style="background:#f5f5f5;">
          <th style="text-align:left; padding:6px; border-bottom:1px solid #ddd;"><input type="checkbox"/></th>
          <th style="text-align:left; padding:6px; border-bottom:1px solid #ddd;">Encounter</th>
          <th style="text-align:left; padding:6px; border-bottom:1px solid #ddd;">Patient / المريض</th>
          <th style="text-align:left; padding:6px; border-bottom:1px solid #ddd;">Emirates ID</th>
          <th style="text-align:left; padding:6px; border-bottom:1px solid #ddd;">Service Date</th>
          <th style="text-align:left; padding:6px; border-bottom:1px solid #ddd;">Charges</th>
          <th style="text-align:left; padding:6px; border-bottom:1px solid #ddd;">Status</th>
          <th style="text-align:left; padding:6px; border-bottom:1px solid #ddd;">Errors</th>
          <th style="text-align:left; padding:6px; border-bottom:1px solid #ddd;">Actions</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td style="padding:6px; border-bottom:1px solid #eee;"><input type="checkbox"/></td>
          <td style="padding:6px; border-bottom:1px solid #eee;">ENC-2026-00123</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">Ahmed Al-Maktoum</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">784-1990-123****-3</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">07-Feb-2026</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">3</td>
          <td style="padding:6px; border-bottom:1px solid #eee;"><span style="background:#e53935; color:#fff; padding:2px 6px; border-radius:10px; font-size:11px;">Error</span></td>
          <td style="padding:6px; border-bottom:1px solid #eee;">2</td>
          <td style="padding:6px; border-bottom:1px solid #eee;"><button style="padding:4px 8px;">Open</button></td>
        </tr>
      </tbody>
    </table>

    <!-- Footer actions -->
    <div style="margin-top:12px; display:flex; justify-content:space-between; align-items:center;">
      <div>
        <button style="padding:6px 10px; margin-right:6px; background:#1a73e8; color:#fff; border:none; border-radius:4px;">Approve Selected</button>
        <button style="padding:6px 10px; background:#fbbc04; color:#000; border:none; border-radius:4px;">Put On Hold</button>
      </div>
      <div style="font-size:12px; color:#666;">Showing 1–20 of 135 encounters</div>
    </div>
  </div>
</div>

Validation Messages

Condition Message Severity
Date range > 31 days "Date range cannot exceed 31 days." Error
No department selected but user restricted "You do not have access to all departments. Please select a department." Error
Invalid Emirates ID format "Emirates ID must be in format 784-YYYY-NNNNNNN-C." Error
CPT code not in CDM "CPT code not found in Charge Description Master. Please select a valid code." Error
ICD-10-AM code invalid "Diagnosis code is not valid or inactive. Select a valid ICD-10-AM code." Error
Charge amount < 0 "Charge amount must be zero or positive." Error
Attempt to approve with blocking errors "One or more selected charges have blocking errors. Resolve errors before approval." Error
Approve with warnings only "Some charges have warnings (non-blocking). Do you want to approve anyway?" Warning

Actions / Buttons

  • Apply (filters): Refreshes worklist with selected filters.
  • Open (row): Opens detailed charge view for that encounter (inline panel or modal).
  • Approve Selected: Sets charge_status = 'Approved' for selected charges without blocking errors; logs user/time.
  • Put On Hold: Prompts for hold reason; sets charge_status = 'On Hold'.
  • Inline Save (per charge row): Saves edits to CPT, modifiers, quantity, amount; re-runs charge/claim edits.

Accessibility (WCAG 2.1 AA)

  • All filter controls have <label> elements and aria-label in English and Arabic where needed.
  • Worklist table uses <th scope="col"> and row selection announced via aria-selected.
  • Error badges include text (e.g., "Error") not just colour.
  • Keyboard: Tab through filters, arrow keys to move in table; space to toggle row checkbox; Enter to open encounter.
  • Screen reader region (aria-live="polite") announces filter changes and validation errors.

Responsive / Mobile

  • Filters stack vertically; table switches to card layout (each encounter as a card with key fields).
  • Inline charge editing limited on small screens; deep edits may open a full-screen modal.
  • Touch targets ≥ 44px height; horizontal scrolling for wide tables.

SCR-BILLINGCLAIMS-002: Claim Generation & Scrubbing

Purpose

Dashboard to aggregate encounters into claims, run claim edits (including DHA/DOH-specific rules), fix errors, and mark claims ready for submission.

Field Specifications

Field Type Required Validation Default Notes
Facility Filter Dropdown No Must match facilities.facility_id User’s default facility
Payer Filter Dropdown No Must match payers.payer_id All
Claim Type Filter Dropdown No Enum (Inpatient, Outpatient, ER, Day Case) All
Ready for Billing From/To Date range picker Yes fromto; max 60 days Last 7 days Based on discharge date
Claims Ready Count Read-only badge ≥ 0 Number of encounters ready to generate
Generate Claims Button Button Enabled if at least one encounter ready Triggers aggregation
Claim List Table Table Shows generated claims
Claim ID Text Exists in claims Click to open claim detail
Patient Name Text From patients
Payer Text From payers
Total Charge Amount Numeric ≥ 0 From claims.total_charge_amount
Edit Check Results Badge / icon Clean / Errors / Warnings
Error Details Expandable list From claim_edits engine
Fix Actions Buttons/links e.g., "Add Diagnosis", "Update Provider"
Mark as Ready Checkbox / button Only if no blocking errors Sets claim_status = 'Ready for Submission'
Batch Submit Button Enabled if at least one claim ready Navigates to Submission Tracker with pre-filter

HTML Wireframe Mockup

Show HTML code
HTML
<div style="font-family: Arial, sans-serif; max-width: 1100px; margin: 20px auto; border: 1px solid #ccc; border-radius: 8px; overflow:hidden;">
  <div style="background:#1a73e8; color:#fff; padding:12px 20px; display:flex; justify-content:space-between;">
    <h3 style="margin:0;">Claim Generation & Scrubbing / إنشاء المطالبات وتنقيحها</h3>
    <div style="font-size:12px;">Clean Claim Rate: 92%</div>
  </div>
  <div style="padding:16px;">
    <!-- Filters and Generate -->
    <div style="display:flex; flex-wrap:wrap; gap:12px; margin-bottom:12px;">
      <div style="flex:1 1 180px;">
        <label>Facility / المنشأة</label><br/>
        <select style="width:100%; padding:4px;">
          <option>All</option>
          <option>Dubai General Hospital</option>
          <option>Abu Dhabi Medical Center</option>
        </select>
      </div>
      <div style="flex:1 1 180px;">
        <label>Payer / شركة التأمين</label><br/>
        <select style="width:100%; padding:4px;">
          <option>All</option>
          <option>Daman</option>
          <option>THIQA</option>
          <option>Oman Insurance</option>
        </select>
      </div>
      <div style="flex:1 1 220px;">
        <label>Discharge Date Range</label><br/>
        <input type="date" style="padding:4px; width:48%;"> -
        <input type="date" style="padding:4px; width:48%;">
      </div>
      <div style="flex:0 0 160px; align-self:flex-end;">
        <button style="width:100%; padding:6px 8px; background:#1a73e8; color:#fff; border:none; border-radius:4px;">Generate Claims</button>
      </div>
    </div>

    <!-- Summary -->
    <div style="margin-bottom:12px; font-size:13px;">
      <span style="margin-right:16px;">Encounters ready: <strong>45</strong></span>
      <span>New claims generated: <strong>40</strong></span>
    </div>

    <!-- Claim List -->
    <table style="width:100%; border-collapse:collapse; font-size:13px;">
      <thead>
        <tr style="background:#f5f5f5;">
          <th style="padding:6px; border-bottom:1px solid #ddd;"><input type="checkbox"/></th>
          <th style="padding:6px; border-bottom:1px solid #ddd; text-align:left;">Claim ID</th>
          <th style="padding:6px; border-bottom:1px solid #ddd; text-align:left;">Patient</th>
          <th style="padding:6px; border-bottom:1px solid #ddd; text-align:left;">Payer</th>
          <th style="padding:6px; border-bottom:1px solid #ddd; text-align:right;">Total Charges (AED)</th>
          <th style="padding:6px; border-bottom:1px solid #ddd; text-align:left;">Edit Status</th>
          <th style="padding:6px; border-bottom:1px solid #ddd; text-align:left;">Errors/Warnings</th>
          <th style="padding:6px; border-bottom:1px solid #ddd; text-align:left;">Actions</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td style="padding:6px; border-bottom:1px solid #eee;"><input type="checkbox"/></td>
          <td style="padding:6px; border-bottom:1px solid #eee;">CLM-2026-00045</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">Fatima Al-Nahyan</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">Daman</td>
          <td style="padding:6px; border-bottom:1px solid #eee; text-align:right;">3,250.00</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">
            <span style="background:#e53935; color:#fff; padding:2px 6px; border-radius:10px; font-size:11px;">Errors</span>
          </td>
          <td style="padding:6px; border-bottom:1px solid #eee;">Missing primary diagnosis; Invalid modifier</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">
            <button style="padding:3px 6px; font-size:12px;">Fix</button>
          </td>
        </tr>
      </tbody>
    </table>

    <!-- Footer -->
    <div style="margin-top:12px; display:flex; justify-content:space-between; align-items:center;">
      <div>
        <button style="padding:6px 10px; margin-right:6px; background:#1a73e8; color:#fff; border:none; border-radius:4px;">Mark Selected as Ready</button>
        <button style="padding:6px 10px; background:#34a853; color:#fff; border:none; border-radius:4px;">Batch Submit</button>
      </div>
      <div style="font-size:12px; color:#666;">Showing 1–20 of 40 claims</div>
    </div>
  </div>
</div>

Validation Messages

Condition Message Severity
No encounters ready "No encounters are ready for claim generation in the selected range." Info
Missing attending provider "Attending provider is required for this claim." Error
Missing primary diagnosis "Primary ICD-10-AM diagnosis is required." Error
Payer-specific format error (DHA) "DHA eClaimLink: Missing or invalid prior authorization number." Error
Payer-specific format warning "DOH eClaims: Service date more than 90 days old. Timely filing risk." Warning
Attempt to mark ready with blocking errors "Resolve all blocking errors before marking claim as ready." Error
Batch submit with no ready claims "Select at least one claim with status 'Ready for Submission'." Error

Actions / Buttons

  • Generate Claims: Runs aggregation logic; creates/updates claims and claim_lines; runs claim edits.
  • Fix: Opens claim detail with inline guidance to resolve specific errors.
  • Mark Selected as Ready: Sets claim_status to Ready for Submission for selected claims without blocking errors.
  • Batch Submit: Navigates to Submission Tracker with selected claims pre-loaded into a new submission batch.

Accessibility

  • Edit status badges include aria-label (e.g., "3 errors, 1 warning").
  • Error details expandable region uses aria-expanded and aria-controls.
  • Keyboard: Space toggles selection; Enter activates "Fix".
  • Screen reader announces when claim generation completes and how many claims were created.

Responsive / Mobile

  • Claim table becomes stacked cards; each card shows Claim ID, patient, payer, status, and key actions.
  • Batch actions appear in a bottom fixed bar on small screens.
  • Filters collapse into a "Filters" accordion.

SCR-BILLINGCLAIMS-003: Claim Submission Tracker

Purpose

Monitor claim submission batches and individual claim statuses across DHA eClaimLink, DOH eClaims, and other channels; support resubmission of rejected claims.

Field Specifications

Field Type Required Validation Default Notes
Submission Batches Table Table High-level batch view
Batch ID Text Generated by system
Submission Channel Dropdown / text Enum (DHA eClaimLink, DOH eClaims, Portal, Manual) From Claim Submission Channels master
Payer Filter Dropdown No Must match payers.payer_id All
Status Filter Multi-select No Enum (Pending, Submitted, Accepted, Rejected, Partially Accepted) Pending, Rejected
Submission Date Date Valid date
Gateway Response Text Summary of last response
Resubmit Button Button Enabled for rejected/failed claims

Validation Messages

Condition Message Severity
Resubmit without changes "You are resubmitting a claim without correcting the previous rejection reason. Continue?" Warning
Channel offline "Selected submission channel is currently unavailable. Please try again later." Error
Missing mandatory channel mapping "No submission configuration found for this payer and channel." Error

Actions / Buttons

  • View Batch Details: Opens list of claims within batch.
  • Resubmit: Creates new claim_submissions record; sends claim to selected channel.
  • Export Batch Log: Exports submission log to CSV/PDF for audit.

Accessibility

  • Status icons include text labels and aria-label with full status.
  • Live region announces when new responses are received (e.g., background polling).

Responsive / Mobile

  • Batch table becomes list view; tapping a batch opens details.
  • Resubmit action available via overflow menu on each claim row.

SCR-BILLINGCLAIMS-004: Payment Posting

Purpose

Interface for importing and reviewing remittance advice (ERA/EOB), matching payments to claims, posting payments and adjustments, and reconciling with bank deposits.

Field Specifications

Field Type Required Validation Default Notes
Remittance List Table From remittance_advice
Remittance ID Text Exists in remittance_advice
Payer Text
Remittance Date Date Valid date
Total Paid Numeric ≥ 0
Status Badge Enum (Imported, In Progress, Posted, Error)
Claim Match Badge % of lines auto-matched
Payment Amount Numeric input Yes ≥ 0 From ERA Per claim/line
Adjustment Codes Multi-select dropdown No Valid CARC/RARC codes
Patient Balance Numeric (read-only) ≥ 0 Calculated
Post Button Button Enabled when remittance balanced Posts payments
Batch Processing Checkbox Unchecked For auto-posting rules

HTML Wireframe Mockup

Show HTML code
HTML
<div style="font-family: Arial, sans-serif; max-width: 1100px; margin: 20px auto; border: 1px solid #ccc; border-radius: 8px; overflow:hidden;">
  <div style="background:#1a73e8; color:#fff; padding:12px 20px;">
    <h3 style="margin:0;">Payment Posting / ترحيل المدفوعات</h3>
  </div>
  <div style="padding:16px;">
    <!-- Remittance List -->
    <table style="width:100%; border-collapse:collapse; font-size:13px; margin-bottom:12px;">
      <thead>
        <tr style="background:#f5f5f5;">
          <th style="padding:6px; border-bottom:1px solid #ddd;">Remittance</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Payer</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Date</th>
          <th style="padding:6px; border-bottom:1px solid #ddd; text-align:right;">Total Paid (AED)</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Match</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Status</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Actions</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td style="padding:6px; border-bottom:1px solid #eee;">ERA-2026-0012</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">THIQA</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">06-Feb-2026</td>
          <td style="padding:6px; border-bottom:1px solid #eee; text-align:right;">125,430.50</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">92% matched</td>
          <td style="padding:6px; border-bottom:1px solid #eee;"><span style="background:#fbbc04; padding:2px 6px; border-radius:10px; font-size:11px;">In Progress</span></td>
          <td style="padding:6px; border-bottom:1px solid #eee;"><button style="padding:3px 6px; font-size:12px;">Open</button></td>
        </tr>
      </tbody>
    </table>

    <!-- Selected Remittance Detail (simplified) -->
    <h4 style="margin-top:0;">ERA-2026-0012 Details</h4>
    <table style="width:100%; border-collapse:collapse; font-size:12px;">
      <thead>
        <tr style="background:#f5f5f5;">
          <th style="padding:4px; border-bottom:1px solid #ddd;">Claim</th>
          <th style="padding:4px; border-bottom:1px solid #ddd;">Patient</th>
          <th style="padding:4px; border-bottom:1px solid #ddd; text-align:right;">Billed</th>
          <th style="padding:4px; border-bottom:1px solid #ddd; text-align:right;">Allowed</th>
          <th style="padding:4px; border-bottom:1px solid #ddd; text-align:right;">Paid</th>
          <th style="padding:4px; border-bottom:1px solid #ddd;">Adj Codes</th>
          <th style="padding:4px; border-bottom:1px solid #ddd; text-align:right;">Patient Resp.</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td style="padding:4px; border-bottom:1px solid #eee;">CLM-2026-00045</td>
          <td style="padding:4px; border-bottom:1px solid #eee;">Fatima Al-Nahyan</td>
          <td style="padding:4px; border-bottom:1px solid #eee; text-align:right;">3,250.00</td>
          <td style="padding:4px; border-bottom:1px solid #eee; text-align:right;">2,800.00</td>
          <td style="padding:4px; border-bottom:1px solid #eee; text-align:right;"><input type="number" value="2,500.00" style="width:80px;"/></td>
          <td style="padding:4px; border-bottom:1px solid #eee;">
            <select style="font-size:11px;">
              <option value="">--</option>
              <option>45 - Charge exceeds fee schedule</option>
              <option>PR - Patient responsibility</option>
            </select>
          </td>
          <td style="padding:4px; border-bottom:1px solid #eee; text-align:right;">300.00</td>
        </tr>
      </tbody>
    </table>

    <div style="margin-top:10px; display:flex; justify-content:space-between; align-items:center;">
      <div>
        <label><input type="checkbox"/> Enable batch auto-posting for fully matched lines</label>
      </div>
      <div>
        <button style="padding:6px 10px; background:#34a853; color:#fff; border:none; border-radius:4px;">Post Remittance</button>
      </div>
    </div>
  </div>
</div>

Validation Messages

Condition Message Severity
Remittance total ≠ sum of line payments "Remittance is out of balance. Adjust line amounts or adjustments to match total paid." Error
Payment amount < 0 "Payment amount must be zero or positive." Error
Missing adjustment code where required "Adjustment code is required when adjustment amount is non-zero." Error
Posting without bank deposit date "Bank deposit date is recommended before posting for reconciliation." Warning
Duplicate remittance import "This remittance file appears to be a duplicate (same payer, date, and reference)." Error

Actions / Buttons

  • Open (remittance): Loads remittance detail and associated claims.
  • Post Remittance: Creates payments and payment_allocations, updates claims and claim_lines paid/adjusted amounts, and updates patient responsibility.
  • Enable batch auto-posting: Applies configured auto-post rules (e.g., auto-post if payment = allowed and no denials).

Accessibility

  • Table headers with scope="col"; numeric columns right-aligned but announced with context.
  • Error summary region at top of detail section with links to problematic lines.
  • Keyboard: Arrow keys navigate cells; Enter to edit numeric fields; Esc to cancel edit.

Responsive / Mobile

  • Remittance list as cards; detail lines grouped by claim with collapsible sections.
  • Posting button fixed at bottom on small screens.

SCR-BILLINGCLAIMS-005: Patient Account & Billing

Purpose

Provide a complete view of a patient’s financial account, including encounter charges, insurance payments, patient balance, statement history, and payment plan management. Supports PDPL-compliant display and patient communications.

Field Specifications

Field Type Required Validation Default Notes
Patient Search Search box (MRN/Name/Emirates ID) Yes Min 2 chars; Emirates ID format if used Autocomplete with patient list
Patient Banner Read-only panel Shows name, MRN, Emirates ID (masked), mobile, payer
Account Summary Read-only panel Total charges, insurance payments, adjustments, patient balance
Encounter Charges Table Table Per encounter
Insurance Payments Table From payments/payment_allocations
Patient Balance Numeric ≥ 0 Calculated
Statement History Table From patient_invoices
Payment Plan Form No If created, required fields Installment amount, frequency, start date
Collect Payment Button Enabled if balance > 0 Opens payment collection (or POS screen)

HTML Wireframe Mockup

Show HTML code
HTML
<div style="font-family: Arial, sans-serif; max-width: 1100px; margin: 20px auto; border: 1px solid #ccc; border-radius: 8px; overflow:hidden;">
  <div style="background:#1a73e8; color:#fff; padding:12px 20px;">
    <h3 style="margin:0;">Patient Account & Billing / حساب المريض والفوترة</h3>
  </div>
  <div style="padding:16px;">
    <!-- Search -->
    <div style="margin-bottom:12px;">
      <label>Search Patient / بحث عن مريض</label><br/>
      <input type="text" placeholder="Name, MRN, or Emirates ID" style="width:60%; padding:6px;"/>
      <button style="padding:6px 10px; margin-left:6px; background:#1a73e8; color:#fff; border:none; border-radius:4px;">Search</button>
    </div>

    <!-- Patient Banner -->
    <div style="background:#f0f4f8; padding:10px; border-radius:4px; margin-bottom:12px; display:flex; justify-content:space-between; font-size:13px;">
      <div>
        <strong>Ahmed Al-Maktoum</strong> (MRN: 1002345)<br/>
        Emirates ID: 784-1985-123****-1<br/>
        Mobile: +971 50 123 4567
      </div>
      <div style="text-align:right;">
        Primary Payer: Daman<br/>
        Plan: Enhanced<br/>
        Financial Class: Insured
      </div>
    </div>

    <!-- Account Summary -->
    <div style="display:flex; gap:12px; margin-bottom:12px; font-size:13px;">
      <div style="flex:1; background:#fafafa; padding:8px; border-radius:4px;">
        <div>Total Charges</div>
        <div style="font-size:18px; font-weight:bold;">AED 18,500.00</div>
      </div>
      <div style="flex:1; background:#fafafa; padding:8px; border-radius:4px;">
        <div>Insurance Payments</div>
        <div style="font-size:18px; font-weight:bold;">AED 14,200.00</div>
      </div>
      <div style="flex:1; background:#fafafa; padding:8px; border-radius:4px;">
        <div>Adjustments</div>
        <div style="font-size:18px; font-weight:bold;">AED 1,300.00</div>
      </div>
      <div style="flex:1; background:#fff3cd; padding:8px; border-radius:4px;">
        <div>Patient Balance</div>
        <div style="font-size:18px; font-weight:bold; color:#c00;">AED 3,000.00</div>
      </div>
    </div>

    <!-- Encounters & Statements (simplified) -->
    <h4>Encounters / الزيارات</h4>
    <table style="width:100%; border-collapse:collapse; font-size:12px; margin-bottom:10px;">
      <thead>
        <tr style="background:#f5f5f5;">
          <th style="padding:4px; border-bottom:1px solid #ddd;">Encounter</th>
          <th style="padding:4px; border-bottom:1px solid #ddd;">Date</th>
          <th style="padding:4px; border-bottom:1px solid #ddd; text-align:right;">Charges</th>
          <th style="padding:4px; border-bottom:1px solid #ddd; text-align:right;">Insurance Paid</th>
          <th style="padding:4px; border-bottom:1px solid #ddd; text-align:right;">Patient Balance</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td style="padding:4px; border-bottom:1px solid #eee;">ENC-2026-00123</td>
          <td style="padding:4px; border-bottom:1px solid #eee;">05-Feb-2026</td>
          <td style="padding:4px; border-bottom:1px solid #eee; text-align:right;">5,000.00</td>
          <td style="padding:4px; border-bottom:1px solid #eee; text-align:right;">4,000.00</td>
          <td style="padding:4px; border-bottom:1px solid #eee; text-align:right;">1,000.00</td>
        </tr>
      </tbody>
    </table>

    <h4>Statements / الكشوفات</h4>
    <table style="width:100%; border-collapse:collapse; font-size:12px; margin-bottom:10px;">
      <thead>
        <tr style="background:#f5f5f5;">
          <th style="padding:4px; border-bottom:1px solid #ddd;">Statement #</th>
          <th style="padding:4px; border-bottom:1px solid #ddd;">Date</th>
          <th style="padding:4px; border-bottom:1px solid #ddd;">Amount</th>
          <th style="padding:4px; border-bottom:1px solid #ddd;">Delivery</th>
          <th style="padding:4px; border-bottom:1px solid #ddd;">Status</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td style="padding:4px; border-bottom:1px solid #eee;">ST-2026-0005</td>
          <td style="padding:4px; border-bottom:1px solid #eee;">06-Feb-2026</td>
          <td style="padding:4px; border-bottom:1px solid #eee;">AED 3,000.00</td>
          <td style="padding:4px; border-bottom:1px solid #eee;">SMS + Portal</td>
          <td style="padding:4px; border-bottom:1px solid #eee;">Sent</td>
        </tr>
      </tbody>
    </table>

    <!-- Payment Plan & Collect -->
    <div style="display:flex; justify-content:space-between; align-items:center; margin-top:10px;">
      <div style="font-size:13px;">
        <strong>Payment Plan / خطة الدفع</strong><br/>
        <label><input type="checkbox"/> Create payment plan</label>
      </div>
      <div>
        <button style="padding:6px 10px; background:#34a853; color:#fff; border:none; border-radius:4px;">Collect Payment</button>
      </div>
    </div>
  </div>
</div>

Validation Messages

Condition Message Severity
Patient not found "No patient found matching the search criteria." Info
Payment plan amount ≤ 0 "Installment amount must be greater than zero." Error
Payment plan start date in past "Payment plan start date cannot be in the past." Error
Attempt to collect payment with zero balance "Patient has no outstanding balance." Info
PDPL masking rule "You are not authorised to view full Emirates ID. Masked view applied." Info

Actions / Buttons

  • Search: Finds patient and loads account data.
  • Collect Payment: Opens SCR-BILLINGCLAIMS-009 (POS) with patient context and amount due.
  • Create Payment Plan: Opens form to define installments; saves to patient account.

Accessibility

  • Patient banner fields exposed with clear labels for screen readers.
  • Tables support row-by-row reading; summary figures announced with context (e.g., "Patient balance: AED 3,000").
  • Search input has aria-autocomplete="list" and aria-expanded for suggestions.

Responsive / Mobile

  • Account summary tiles stack vertically.
  • Tables become collapsible lists per encounter/statement.
  • Collect Payment button fixed at bottom for quick access.

SCR-BILLINGCLAIMS-006: AR Aging Dashboard

Purpose

Visual dashboard showing AR aging buckets, payer breakdown, and trends, with ability to drill down to underlying claims and generate follow-up worklists.

Field Specifications

Field Type Required Validation Default Notes
Snapshot Date Date picker Yes ≤ today Today Uses ar_aging.snapshot_date
Facility Filter Dropdown No Valid facility All
Payer Breakdown Chart Bar/pie chart Visual AR by payer
Aging Buckets Tiles/table 0–30, 31–60, 61–90, 91–120, >120
Total AR Numeric ≥ 0 Sum of outstanding
Aging Trends Line chart AR over time
Drill Down to Claims Link/button Opens filtered claim list
Follow-up Worklist Table For AR Specialist

Validation Messages

Condition Message Severity
No AR data for date "No AR snapshot available for the selected date." Info
Snapshot date in future "Snapshot date cannot be in the future." Error

Actions / Buttons

  • Refresh: Reloads dashboard with selected filters.
  • Export: Exports AR summary to Excel/PDF.
  • Create Worklist: Generates follow-up tasks for selected bucket/payer.

Accessibility

  • Charts provide data tables with same information for screen readers.
  • Colour-coded buckets also labelled with text (e.g., ">120 days").

Responsive / Mobile

  • Charts stack vertically; some charts may be hidden behind tabs.
  • Drill-down opens a simplified claim list optimised for mobile.

SCR-BILLINGCLAIMS-007: Denial Worklist

Purpose

Central worklist for denied and underpaid claims, showing denial reasons, amounts, days to file, and appeal status. Supports prioritisation and appeal initiation.

Field Specifications

Field Type Required Validation Default Notes
Denied Claims Table Table From claim_responses, denial_codes
Claim ID Text
Payer Text
Denial Reason Text Categorised (eligibility, auth, coding, etc.)
Amount Numeric ≥ 0 Denied amount
Appeal Status Dropdown No Enum (Not Started, In Progress, Submitted, Overturned, Upheld) Not Started
Days to File Numeric ≥ 0 Based on payer rules
Appeal Button Button Enabled if appeal window open Opens appeal form

Validation Messages

Condition Message Severity
Appeal after filing deadline "Appeal filing deadline has passed for this claim." Error
Missing documentation "Attach required clinical documentation before submitting appeal." Error

Actions / Buttons

  • Appeal: Opens appeal creation form; captures reason, documentation, and channel.
  • Update Appeal Status: Manually update based on payer response.
  • Send to Denial Analysis: Flag for trend analysis.

Accessibility

  • Days to file highlighted with text and aria-label (e.g., "3 days remaining to file appeal").
  • Keyboard shortcuts for changing appeal status.

Responsive / Mobile

  • Worklist as cards sorted by amount and days to file; appeal button prominent.

SCR-BILLINGCLAIMS-008: Revenue Dashboard

Purpose

Executive dashboard summarising total charges, collections, net revenue, collection rate, denial rate, AR days, payer mix, and trends, with drill-down by facility, department, and payer.

Field Specifications

Field Type Required Validation Default Notes
Date Range Date range picker Yes fromto; max 12 months Last 3 months
Facility Filter Dropdown No Valid facility All
Department Filter Dropdown No Valid department All
Total Charges Numeric tile ≥ 0
Total Collections Numeric tile ≥ 0
Net Revenue Numeric tile ≥ 0
Collection Rate Percentage tile 0–100%
Denial Rate Percentage tile 0–100%
AR Days Numeric tile ≥ 0
Payer Mix Chart Pie chart
Trends Line/column charts

Validation Messages

Condition Message Severity
Date range > 12 months "Reporting period cannot exceed 12 months." Error

Actions / Buttons

  • Drill-down: Clicking a tile or chart segment opens detailed report (e.g., list of claims).
  • Export: Export dashboard data to Excel/PDF.

Accessibility

  • All charts have data table equivalents.
  • Tiles include descriptive text for screen readers (e.g., "Collection rate 95 percent, target 95 percent").

Responsive / Mobile

  • Tiles appear first; charts accessible via swipeable tabs.
  • Drill-down opens simplified lists.

SCR-BILLINGCLAIMS-009: Cashier / POS Collection

Purpose

Streamlined interface for point-of-service collection of co-payments and other patient payments, with integrated receipt generation and end-of-day reconciliation.

Field Specifications

Field Type Required Validation Default Notes
Patient Search Text input Yes Min 2 chars; Emirates ID format if used Can also be pre-populated from Patient Access
Amount Due Numeric (read-only) ≥ 0 From patient account
Custom Amount to Collect Numeric input Yes ≥ 0; ≤ amount due (unless overpayment allowed) Amount due
Payment Method Dropdown Yes Must be one of Payment Method Types Cash, credit, debit, bank transfer, online, etc.
Amount Collected Numeric input Yes ≥ 0 Same as custom amount
Receipt Print Button Enabled after successful payment Prints bilingual receipt
End-of-Day Reconciliation Button Cashier role only Summarises payments by method

Validation Messages

Condition Message Severity
Amount collected > amount due "Collected amount exceeds amount due. Confirm if this is an advance payment or deposit." Warning
Payment method not selected "Select a payment method." Error
Zero amount collected "Payment amount must be greater than zero." Error

Actions / Buttons

  • Collect Payment: Creates patient_payments record, updates patient balance.
  • Print Receipt: Generates bilingual EN/AR receipt with PDPL-compliant masking.
  • Send Digital Receipt: Sends SMS/email receipt via integrated messaging.

Accessibility

  • Large, high-contrast buttons for payment actions.
  • Clear focus order for quick keyboard operation at busy front desks.

Responsive / Mobile

  • Optimised for tablet devices at POS; large inputs and buttons.
  • Minimal scrolling; key fields visible without scrolling in landscape mode.

Common UI Patterns

Patient Banner

  • Displayed on all patient-specific screens (Charge Review detail, Patient Account, POS).
  • Fields:
  • Patient name (EN + optional AR)
  • MRN
  • Emirates ID (masked according to PDPL and facility policy)
  • Date of birth, age
  • Mobile number
  • Primary payer and plan
  • Behaviour:
  • Clickable to open full patient summary (from ehr-patient-mgmt).
  • Uses high contrast and clear typography.
  • Accessibility:
  • Exposed as a landmark region (role="banner").
  • Screen reader text includes "Patient: [Name], MRN [MRN], Emirates ID masked."

Search Components

  • Used for patient search, payer filter, department filter, etc.
  • Patterns:
  • Autocomplete with minimum character threshold (2–3 chars).
  • Debounced requests (300–500 ms).
  • Clear button to reset search.
  • Validation:
  • Inline messages for "no results" vs. "too many results".
  • Accessibility:
  • aria-autocomplete="list", aria-controls for result list.
  • Keyboard navigation: Up/Down to move in suggestions, Enter to select.

Alert / Notification Patterns

  • Types:
  • Error (red): blocking issues (e.g., missing mandatory fields).
  • Warning (amber): non-blocking but important (e.g., timely filing risk).
  • Info (blue): informational (e.g., PDPL masking applied).
  • Success (green): confirmation (e.g., payment posted).
  • Placement:
  • Global alerts at top of screen.
  • Inline field-level messages under the field.
  • Accessibility:
  • Global alerts announced via aria-live="assertive" for errors, polite for others.
  • Icons always accompanied by text labels.

Loading States

  • Use skeleton loaders for tables and dashboards.
  • Show concise text such as "Loading claims…" with spinner.
  • For long-running operations (e.g., batch claim generation), show progress indicator and allow user to navigate away while process continues in background, with notification when complete.

Arabic/English Bilingual UI Considerations

  • All labels and key actions available in English and Arabic; facility can configure default language per user.
  • Support right-to-left (RTL) layout for Arabic:
  • When Arabic is primary, align text right and flip layout where appropriate.
  • Ensure numeric values (amounts, dates) remain easily readable.
  • Receipts, statements, and patient-facing content:
  • Bilingual headers and key fields (e.g., "Amount Due / المبلغ المستحق").
  • Date and number formats:
  • Use day-month-year (e.g., 07-Feb-2026) and AED currency formatting.
  • Accessibility:
  • lang="ar" set for Arabic text blocks.
  • Screen readers correctly switch language context.

```

content/rcm/billing-claims/04-screen-requirements.md Generated 2026-02-20 22:54