Denial Analysis Screen Requirements

Denial Analysis Screen Requirements

Screen Inventory

Screen ID Screen Name Primary Actor(s) Workflow(s) Access Level
SCR-DENIALANALYSIS-001 Denial Worklist Denial Analyst, Senior Denial Analyst, Denial Manager WF-DEN-001, WF-DEN-002, WF-DEN-003, WF-DEN-004 Users with view_denials
SCR-DENIALANALYSIS-002 Denial Detail & Root Cause Denial Analyst, Senior Denial Analyst, Coding Specialist, Physician Advisor, Denial Manager WF-DEN-002, WF-DEN-003 Users with categorize_denials, analyze_root_cause
SCR-DENIALANALYSIS-003 Appeal Management Denial Analyst, Senior Denial Analyst, Denial Manager, Coding Specialist, Physician Advisor WF-DEN-003, WF-DEN-004 Users with prepare_appeals, submit_appeals, track_appeals
SCR-DENIALANALYSIS-004 Denial Trend Dashboard Denial Manager, Revenue Cycle Manager, Department Heads WF-DEN-005 Users with view_analytics
SCR-DENIALANALYSIS-005 Payer Scorecard Denial Manager, Revenue Cycle Manager, Finance Leadership WF-DEN-006 Users with generate_scorecards, view_analytics
SCR-DENIALANALYSIS-006 Prevention Action Tracker Denial Manager, Revenue Cycle Manager, Department Heads WF-DEN-005 Users with create_prevention_plans
SCR-DENIALANALYSIS-007 Executive Denial Summary Revenue Cycle Manager, C-Suite, Finance Director WF-DEN-005, WF-DEN-006 Users with view_all_denial_analytics

flowchart LR A["RCM Home / Analytics Landing"] --> B["SCR-DENIALANALYSIS-001<br/>Denial Worklist"] A --> C["SCR-DENIALANALYSIS-004<br/>Denial Trend Dashboard"] A --> D["SCR-DENIALANALYSIS-007<br/>Executive Denial Summary"] B --> E["Open Denial"] E --> F["SCR-DENIALANALYSIS-002<br/>Denial Detail & Root Cause"] F --> G["Create / View Appeal"] G --> H["SCR-DENIALANALYSIS-003<br/>Appeal Management"] C --> I["Drill-down by Payer/Category"] I --> B C --> J["Create Prevention Action"] J --> K["SCR-DENIALANALYSIS-006<br/>Prevention Action Tracker"] C --> L["View Payer Comparison"] L --> M["SCR-DENIALANALYSIS-005<br/>Payer Scorecard"] M --> C K --> C D --> C D --> M

Screen Specifications

SCR-DENIALANALYSIS-001: Denial Worklist

Purpose
Central queue of open denials, prioritised by financial impact and appeal deadline, with filters and batch actions.

Field Specifications

Filters & Header

Field Type Required Validation Default Notes
Payer Filter Dropdown (multi-select) No Must match existing payer IDs All payers Source: payers from policy-contract-mgmt
Denial Category Filter Dropdown (multi-select) No FK to denial_categories.category_id All categories Includes “Eligibility”, “Authorization”, etc.
Amount Range (Min/Max) Numeric No ≥ 0; min ≤ max Empty AED currency; used for prioritisation
Age (Days) Filter Numeric No ≥ 0 Empty Filters by current_date - denial_date
Appeal Deadline Range Date range picker No Start ≤ End Empty Uses appeal_deadline per payer rules
Assigned Analyst Filter Dropdown No FK to users.user_id Current user “Unassigned” option
Status Filter Dropdown (multi-select) No IN (New, In Analysis, Awaiting Appeal, Appealed, Resolved, Written Off) New, In Analysis, Awaiting Appeal Maps to denial_records.status
Search Box Text No Max 100 chars Empty Searches by claim ID, patient name, Emirates ID, denial code

Worklist Table Columns

Field Type Required Validation Default Notes
Select Row Checkbox No Unchecked For batch actions
Priority Score Badge Display Calculated server-side Combines amount + days to deadline
Denial ID Link Yes FK to denial_records.denial_id Opens SCR-DENIALANALYSIS-002
Claim ID Text Yes FK to claims.claim_id From billing-claims
Patient Name Text Yes From patients (Arabic/English)
Payer Text Yes From payers
Denial Category Text Yes FK to denial_categories Short label
Denied Amount (AED) Numeric Yes ≥ 0 From denial_records.denied_amount
Denial Date Date Yes Valid date From denial_records.denial_date
Age (Days) Numeric Yes ≥ 0 Calculated
Appeal Deadline Date Yes Valid date From payer rules
Days to Deadline Numeric Yes Can be negative Negative = past deadline
Assigned Analyst Text No FK to users “Unassigned”
Status Badge Yes IN allowed statuses “New” Colour-coded + text

Batch Action Controls

Field Type Required Validation Default Notes
Batch Action Selector Dropdown No IN (Assign Analyst, Change Status, Export, Create Bulk Appeal) Disabled if no rows selected
Batch Analyst Dropdown Conditional Required if action = Assign Analyst FK to users
Batch Status Dropdown Conditional Required if action = Change Status Allowed transitions only

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;">Denial Worklist</h3>
    <span style="font-size: 12px;">Sorted by priority (Amount &amp; Appeal Deadline)</span>
  </div>
  <div style="padding: 16px; border-bottom: 1px solid #eee;">
    <!-- Filters -->
    <div style="display:flex; flex-wrap:wrap; gap:12px;">
      <div style="flex:1 1 180px;">
        <label>Payer</label><br/>
        <select style="width:100%; padding:4px;"><option>All Payers</option></select>
      </div>
      <div style="flex:1 1 180px;">
        <label>Category</label><br/>
        <select style="width:100%; padding:4px;"><option>All Categories</option></select>
      </div>
      <div style="flex:1 1 120px;">
        <label>Min Amount (AED)</label><br/>
        <input type="number" style="width:100%; padding:4px;"/>
      </div>
      <div style="flex:1 1 120px;">
        <label>Max Amount (AED)</label><br/>
        <input type="number" style="width:100%; padding:4px;"/>
      </div>
      <div style="flex:1 1 120px;">
        <label>Age &le; (days)</label><br/>
        <input type="number" style="width:100%; padding:4px;"/>
      </div>
      <div style="flex:1 1 160px;">
        <label>Assigned Analyst</label><br/>
        <select style="width:100%; padding:4px;"><option>Me</option></select>
      </div>
      <div style="flex:1 1 200px;">
        <label>Search</label><br/>
        <input type="text" placeholder="Claim ID, Patient, Emirates ID" style="width:100%; padding:4px;"/>
      </div>
    </div>
  </div>
  <div style="padding: 8px 16px; border-bottom: 1px solid #eee; display:flex; justify-content:space-between; align-items:center;">
    <div>
      <label>Batch Action:</label>
      <select style="margin-left:4px; padding:4px;">
        <option value="">Select...</option>
        <option>Assign Analyst</option>
        <option>Change Status</option>
        <option>Export</option>
      </select>
    </div>
    <div style="font-size:12px; color:#555;">Showing 1–25 of 240 denials</div>
  </div>
  <div style="padding: 0 16px 16px 16px;">
    <!-- Table -->
    <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;">Priority</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Denial ID</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Claim ID</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Patient</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Payer</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Category</th>
          <th style="padding:6px; border-bottom:1px solid #ddd; text-align:right;">Denied Amt (AED)</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Denial Date</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Days to Deadline</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Analyst</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Status</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;"><span style="background:#d93025; color:#fff; padding:2px 6px; border-radius:10px; font-size:11px;">High</span></td>
          <td style="padding:6px; border-bottom:1px solid #eee;"><a href="#">DEN-2026-00123</a></td>
          <td style="padding:6px; border-bottom:1px solid #eee;">CLM-458921</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">Ahmed Al-Maktoum</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">Daman</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">Authorization</td>
          <td style="padding:6px; border-bottom:1px solid #eee; text-align:right;">12,500.00</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">05-Feb-2026</td>
          <td style="padding:6px; border-bottom:1px solid #eee; color:#d93025;">3</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">F. Khan</td>
          <td style="padding:6px; border-bottom:1px solid #eee;"><span style="background:#fbbc04; padding:2px 6px; border-radius:10px; font-size:11px;">Awaiting Appeal</span></td>
        </tr>
      </tbody>
    </table>
  </div>
</div>

Validation Messages

Condition Message Severity
Min Amount > Max Amount "Minimum amount cannot be greater than maximum amount." Error
Age filter < 0 "Age in days must be zero or greater." Error
Appeal deadline start > end "Appeal deadline start date must be before end date." Error
No results for filters "No denials match the selected filters. Adjust filters and try again." Info
Batch action selected with no rows "Select at least one denial to apply this action." Error
User lacks permission for batch action "You do not have permission to perform this batch action." Error

Actions / Buttons

Action Description
Row click / Denial ID link Opens SCR-DENIALANALYSIS-002 for selected denial.
Apply Filters (implicit on change or explicit button) Refreshes worklist with current filter criteria.
Clear Filters Resets all filters to defaults.
Batch: Assign Analyst Assigns selected denials to chosen analyst (with audit log).
Batch: Change Status Updates status for selected denials (where transition allowed).
Batch: Export Exports current filtered list to CSV/XLSX (subject to PDPL rules).
Sort by Column Sorts ascending/descending by selected column.
Pagination Controls Navigate between pages of results.

Accessibility (WCAG 2.1 AA)

  • All filters have <label> elements; search has aria-label describing searchable fields.
  • Table headers use <th scope="col">; row selection checkboxes have aria-label="Select denial DEN-XXXX".
  • Batch action errors announced via aria-live="polite" region.
  • Keyboard: Tab through filters, table, and batch controls; arrow keys to move within table rows; Enter to open denial.
  • Colour-coded badges always include text labels (e.g., “High”, “Awaiting Appeal”).

Responsive / Mobile

  • Filters collapse into an accordion panel (“Filters”) on screens < 768px.
  • Table switches to stacked card layout: each denial shown as a card with key fields; actions at bottom.
  • Sticky bottom bar for batch actions on mobile to keep controls reachable.
  • Touch targets at least 44x44px; horizontal scrolling allowed for wide tables.

SCR-DENIALANALYSIS-002: Denial Detail & Root Cause

Purpose
Provide full context for a denial (claim, patient, payer response) and capture structured root cause analysis and recommendations.

Field Specifications

Header & Context

Field Type Required Validation Default Notes
Patient Banner Composite Display Standard patient banner (see Common UI Patterns)
Denial ID Text Display From denial_records.denial_id
Claim ID Link Display Link to billing-claims claim detail
Payer Text Display From payers
Denial Date Date Display From denial_records.denial_date
Denied Amount (AED) Numeric Display ≥ 0 From denial_records.denied_amount
Appeal Deadline Date Display Calculated from payer rules

Denial Information

Field Type Required Validation Default Notes
Denial Code (Payer) Text Display From payer remittance
Denial Description Textarea (read-only) Display From payer or mapping table
Denial Category Dropdown Yes FK to denial_categories.category_id Pre-filled from auto-categorisation Editable by authorised users
Claim Lines Summary Table Display Shows affected claim lines, CPT, ICD-10-AM, amounts

Root Cause Section

Field Type Required Validation Default Notes
Root Cause Category Dropdown Yes From master "Root Cause Classification" Empty e.g., Registration, Eligibility, Coding, Billing
Root Cause Detail Dropdown / Autocomplete Yes Must belong to selected category Empty FK to denial_root_causes.root_cause_detail master list
Process Failure Point Dropdown Yes From controlled list Empty e.g., Pre-registration, Charge Capture, Claim Submission
Responsible Department Dropdown Yes From departments Empty Used for reporting and action plans
Identified By Dropdown Yes FK to users.user_id Current user From denial_root_causes.identified_by
Identified Date Date Yes ≤ current date Today From denial_root_causes.identified_date
Preventable? Radio (Yes/No/Unknown) Yes IN (Y,N,U) Unknown Maps to denial_records.is_preventable
Narrative Notes Textarea No Max 2000 chars Empty Free-text explanation
Appeal Recommendation Dropdown Yes IN (Appeal, Correct & Resubmit, Write-off, No Action) Empty Drives WF-DEN-003 / write-off workflow
Recommended Appeal Level Dropdown Conditional Required if Appeal Recommendation = Appeal Empty First-level, Second-level, External

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:#fff; padding:12px 20px;">
    <h3 style="margin:0;">Denial Detail &amp; Root Cause</h3>
  </div>
  <div style="padding:16px; border-bottom:1px solid #eee;">
    <!-- Patient banner placeholder -->
    <div style="background:#f0f4f8; padding:8px 12px; border-radius:4px; font-size:13px;">
      <strong>Ahmed Al-Maktoum</strong> | MRN: 123456 | Emirates ID: 784-1985-1234567-1 | DOB: 12-Mar-1985 | Payer: Daman
    </div>
  </div>
  <div style="padding:16px; display:flex; flex-wrap:wrap; gap:16px; border-bottom:1px solid #eee;">
    <div style="flex:1 1 220px;">
      <label>Denial ID</label><br/>
      <span>DEN-2026-00123</span>
    </div>
    <div style="flex:1 1 220px;">
      <label>Claim ID</label><br/>
      <a href="#">CLM-458921</a>
    </div>
    <div style="flex:1 1 220px;">
      <label>Denied Amount (AED)</label><br/>
      <span>12,500.00</span>
    </div>
    <div style="flex:1 1 220px;">
      <label>Appeal Deadline</label><br/>
      <span style="color:#d93025;">10-Feb-2026 (3 days)</span>
    </div>
  </div>
  <div style="padding:16px; border-bottom:1px solid #eee;">
    <h4 style="margin-top:0;">Denial Information</h4>
    <div style="display:flex; flex-wrap:wrap; gap:16px;">
      <div style="flex:1 1 200px;">
        <label>Denial Code (Payer)</label><br/>
        <input type="text" value="CO-197" readonly style="width:100%; padding:4px; background:#f9f9f9;"/>
      </div>
      <div style="flex:1 1 220px;">
        <label>Denial Category</label><br/>
        <select style="width:100%; padding:4px;">
          <option>Authorization</option>
          <option>Eligibility</option>
        </select>
      </div>
      <div style="flex:1 1 100%;">
        <label>Denial Description</label><br/>
        <textarea readonly style="width:100%; padding:4px; background:#f9f9f9; height:60px;">Authorization not obtained or invalid for date of service.</textarea>
      </div>
    </div>
  </div>
  <div style="padding:16px;">
    <h4 style="margin-top:0;">Root Cause Analysis</h4>
    <div style="display:flex; flex-wrap:wrap; gap:16px;">
      <div style="flex:1 1 220px;">
        <label>Root Cause Category</label><br/>
        <select style="width:100%; padding:4px;">
          <option>Front-end: Eligibility/Authorization</option>
        </select>
      </div>
      <div style="flex:1 1 220px;">
        <label>Root Cause Detail</label><br/>
        <select style="width:100%; padding:4px;">
          <option>Authorization not requested</option>
        </select>
      </div>
      <div style="flex:1 1 220px;">
        <label>Process Failure Point</label><br/>
        <select style="width:100%; padding:4px;">
          <option>Pre-registration</option>
        </select>
      </div>
      <div style="flex:1 1 220px;">
        <label>Responsible Department</label><br/>
        <select style="width:100%; padding:4px;">
          <option>Patient Access</option>
        </select>
      </div>
      <div style="flex:1 1 180px;">
        <label>Preventable?</label><br/>
        <select style="width:100%; padding:4px;">
          <option>Yes</option>
          <option>No</option>
          <option>Unknown</option>
        </select>
      </div>
      <div style="flex:1 1 180px;">
        <label>Appeal Recommendation</label><br/>
        <select style="width:100%; padding:4px;">
          <option>Appeal</option>
          <option>Correct &amp; Resubmit</option>
          <option>Write-off</option>
        </select>
      </div>
      <div style="flex:1 1 100%;">
        <label>Narrative Notes</label><br/>
        <textarea style="width:100%; padding:4px; height:80px;" placeholder="Describe findings and recommendation..."></textarea>
      </div>
    </div>
    <div style="margin-top:16px; text-align:right;">
      <button style="padding:6px 12px; margin-right:8px;">Cancel</button>
      <button style="padding:6px 12px; margin-right:8px;">Save</button>
      <button style="padding:6px 12px; background:#1a73e8; color:#fff; border:none; border-radius:4px;">Save &amp; Create Appeal</button>
    </div>
  </div>
</div>

Validation Messages

Condition Message Severity
Root Cause Category empty "Root cause category is required." Error
Root Cause Detail empty "Root cause detail is required." Error
Process Failure Point empty "Select where in the process the failure occurred." Error
Responsible Department empty "Responsible department is required for reporting." Error
Identified Date in future "Identified date cannot be in the future." Error
Narrative Notes > 2000 chars "Narrative notes cannot exceed 2000 characters." Error
Appeal Recommendation empty "Select an appeal recommendation before saving." Error
Recommended Appeal Level missing when Appeal selected "Select an appeal level for this denial." Error
User without permission editing category/root cause "You do not have permission to modify denial categorisation." Error

Actions / Buttons

Action Description
Save Persists root cause fields and updates denial_records and denial_root_causes.
Save & Create Appeal Saves analysis then opens SCR-DENIALANALYSIS-003 pre-populated.
Cancel Discards unsaved changes and returns to previous screen.
View Claim Details Opens claim detail in billing-claims (new tab or modal).
View Patient Chart Opens EHR patient chart (read-only).

Accessibility

  • Section headings (<h4>) provide landmarks for screen readers.
  • All inputs have labels; error messages linked via aria-describedby.
  • Use aria-expanded for collapsible sections (e.g., claim lines).
  • Keyboard: Tab order follows logical flow; buttons reachable without mouse.

Responsive / Mobile

  • Layout collapses to single column; sections stacked vertically.
  • Patient banner becomes a compact card with key identifiers.
  • Action buttons fixed at bottom of viewport on mobile for easy access.

SCR-DENIALANALYSIS-003: Appeal Management

Purpose
Manage appeal preparation, submission, and tracking for a specific denial, including supporting documents and payer responses.

Field Specifications

Appeal Queue (within screen)

Field Type Required Validation Default Notes
Appeal List Table Display Shows all appeals for this denial (level, status, dates)
Selected Appeal Row selection Yes (for detail) Must select existing appeal Latest appeal Drives detail panel

Appeal Detail

Field Type Required Validation Default Notes
Appeal ID Text Display From appeals.appeal_id
Appeal Level Dropdown Yes IN (1st Level, 2nd Level, External) Based on recommendation Maps to appeals.appeal_level
Submission Method Dropdown Yes IN (eClaimLink, DOH eClaims, Payer Portal, Email, Fax, Other) eClaimLink/DOH based on payer appeals.submission_method
Submission Channel Text Conditional Required if Method = Other Empty Free-text description
Submission Date Date Yes ≤ current date; ≥ denial date Today appeals.submission_date
Supporting Docs Multi-file upload No Allowed types: PDF, DOCX, JPG, PNG; max size per file; total size limit Empty appeals.supporting_docs (paths/IDs)
Appeal Letter Template Dropdown Yes FK to "Appeal Letter Templates" master Based on payer & category Used to generate letter
Appeal Letter Preview Rich text Display Generated appeals.appeal_letter_path
Follow-up Date Date No ≥ Submission Date Auto-calculated from payer SLA appeals.follow_up_date
Status Dropdown Yes IN (Draft, Submitted, Under Review, Additional Info Requested, Resolved, Cancelled) Draft/Submitted appeals.status
Assigned To Dropdown Yes FK to users.user_id Current analyst appeals.assigned_to
Payer Response Summary Textarea No Max 1000 chars Empty For quick notes

Outcome Recording (linked to appeal_outcomes)

Field Type Required Validation Default Notes
Response Date Date Conditional Required when Status = Resolved Empty appeal_outcomes.response_date
Payer Decision Dropdown Conditional Required when Status = Resolved Empty IN (Overturned, Upheld, Partially Overturned)
Recovered Amount (AED) Numeric Conditional ≥ 0; ≤ denied amount 0 appeal_outcomes.recovered_amount
Adjustment Code Text No Max 50 chars Empty Payer adjustment code
Final Resolution Dropdown Conditional Required when Status = Resolved Empty IN (Paid, Partial Paid, Written Off, Pending Further Appeal)
Notes Textarea No Max 2000 chars Empty appeal_outcomes.notes

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:#fff; padding:12px 20px;">
    <h3 style="margin:0;">Appeal Management</h3>
  </div>
  <div style="padding:12px 16px; border-bottom:1px solid #eee; font-size:13px;">
    <strong>Denial:</strong> DEN-2026-00123 | Claim: CLM-458921 | Payer: Daman | Denied Amt: 12,500.00 AED
  </div>
  <div style="padding:16px; border-bottom:1px solid #eee;">
    <h4 style="margin-top:0;">Existing Appeals</h4>
    <table style="width:100%; border-collapse:collapse; font-size:13px;">
      <thead>
        <tr style="background:#f5f5f5;">
          <th style="padding:6px; border-bottom:1px solid #ddd;">Appeal ID</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Level</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Submission Date</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Method</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Status</th>
          <th style="padding:6px; border-bottom:1px solid #ddd;">Recovered (AED)</th>
        </tr>
      </thead>
      <tbody>
        <tr style="cursor:pointer; background:#fff;">
          <td style="padding:6px; border-bottom:1px solid #eee;">APL-2026-0001</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">1st Level</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">06-Feb-2026</td>
          <td style="padding:6px; border-bottom:1px solid #eee;">eClaimLink</td>
          <td style="padding:6px; border-bottom:1px solid #eee;"><span style="background:#fbbc04; padding:2px 6px; border-radius:10px; font-size:11px;">Under Review</span></td>
          <td style="padding:6px; border-bottom:1px solid #eee;">0.00</td>
        </tr>
      </tbody>
    </table>
    <button style="margin-top:8px; padding:6px 12px;">New Appeal</button>
  </div>
  <div style="padding:16px;">
    <h4 style="margin-top:0;">Appeal Details</h4>
    <div style="display:flex; flex-wrap:wrap; gap:16px;">
      <div style="flex:1 1 200px;">
        <label>Appeal Level</label><br/>
        <select style="width:100%; padding:4px;">
          <option>1st Level</option>
          <option>2nd Level</option>
        </select>
      </div>
      <div style="flex:1 1 200px;">
        <label>Submission Method</label><br/>
        <select style="width:100%; padding:4px;">
          <option>eClaimLink</option>
          <option>DOH eClaims</option>
          <option>Payer Portal</option>
        </select>
      </div>
      <div style="flex:1 1 200px;">
        <label>Submission Date</label><br/>
        <input type="date" style="width:100%; padding:4px;"/>
      </div>
      <div style="flex:1 1 200px;">
        <label>Status</label><br/>
        <select style="width:100%; padding:4px;">
          <option>Draft</option>
          <option>Submitted</option>
          <option>Under Review</option>
          <option>Resolved</option>
        </select>
      </div>
      <div style="flex:1 1 200px;">
        <label>Follow-up Date</label><br/>
        <input type="date" style="width:100%; padding:4px;"/>
      </div>
      <div style="flex:1 1 200px;">
        <label>Assigned To</label><br/>
        <select style="width:100%; padding:4px;">
          <option>Current User</option>
        </select>
      </div>
      <div style="flex:1 1 100%;">
        <label>Supporting Documents</label><br/>
        <input type="file" multiple style="padding:4px;"/>
      </div>
      <div style="flex:1 1 100%;">
        <label>Appeal Letter Template</label><br/>
        <select style="width:100%; padding:4px;">
          <option>Daman - Authorization Denial</option>
        </select>
      </div>
      <div style="flex:1 1 100%;">
        <label>Appeal Letter Preview</label><br/>
        <div style="border:1px solid #ddd; padding:8px; height:120px; overflow:auto; background:#fafafa; font-size:12px;">
          <!-- Generated letter preview -->
          <p>Dear Sir/Madam,</p>
          <p>We are writing to appeal the denial for claim CLM-458921...</p>
        </div>
      </div>
    </div>
    <h4>Outcome (if resolved)</h4>
    <div style="display:flex; flex-wrap:wrap; gap:16px;">
      <div style="flex:1 1 200px;">
        <label>Response Date</label><br/>
        <input type="date" style="width:100%; padding:4px;"/>
      </div>
      <div style="flex:1 1 200px;">
        <label>Payer Decision</label><br/>
        <select style="width:100%; padding:4px;">
          <option>Overturned</option>
          <option>Upheld</option>
          <option>Partially Overturned</option>
        </select>
      </div>
      <div style="flex:1 1 200px;">
        <label>Recovered Amount (AED)</label><br/>
        <input type="number" style="width:100%; padding:4px;"/>
      </div>
      <div style="flex:1 1 100%;">
        <label>Notes</label><br/>
        <textarea style="width:100%; padding:4px; height:60px;"></textarea>
      </div>
    </div>
    <div style="margin-top:16px; text-align:right;">
      <button style="padding:6px 12px; margin-right:8px;">Cancel</button>
      <button style="padding:6px 12px; margin-right:8px;">Save Draft</button>
      <button style="padding:6px 12px; background:#1a73e8; color:#fff; border:none; border-radius:4px;">Submit Appeal</button>
    </div>
  </div>
</div>

Validation Messages

Condition Message Severity
Appeal Level empty "Appeal level is required." Error
Submission Method empty "Submission method is required." Error
Submission Date in future "Submission date cannot be in the future." Error
Submission Date < Denial Date "Submission date cannot be before the denial date." Error
Status = Submitted but required fields missing "Complete all required fields before submitting the appeal." Error
File upload type not allowed "File type not supported. Allowed types: PDF, DOCX, JPG, PNG." Error
Total upload size exceeded "Total attachment size exceeds the allowed limit." Error
Status = Resolved but Response Date missing "Response date is required when marking the appeal as resolved." Error
Recovered Amount > Denied Amount "Recovered amount cannot exceed the denied amount (AED {max})." Error

Actions / Buttons

Action Description
New Appeal Creates new appeals record linked to denial.
Save Draft Saves appeal without changing status to Submitted.
Submit Appeal Validates fields, sets status to Submitted, triggers integration (eClaimLink/DOH eClaims).
Cancel Discards unsaved changes and returns to previous screen.
Upload Documents Attaches files to appeal; stored in secure document repository.

Accessibility

  • File input has descriptive label and helper text for allowed formats.
  • Status changes and submission confirmations announced via aria-live.
  • Table of existing appeals uses proper header semantics.
  • Keyboard: All controls reachable; no drag-and-drop required for uploads.

Responsive / Mobile

  • Existing appeals table becomes list of cards with key info and tap-to-expand.
  • Appeal detail fields stacked; letter preview collapsible to save vertical space.
  • Submit button fixed at bottom on small screens.

SCR-DENIALANALYSIS-004: Denial Trend Dashboard

Purpose
Interactive analytics view showing denial trends over time by category, payer, department, and provider, with drill-down to worklist.

Field Specifications

Filters

Field Type Required Validation Default Notes
Date Range Date range picker Yes Start ≤ End; range ≤ 24 months Last 90 days Applies to denial_trends.period_start/end
Payer Multi-select dropdown No FK to payers All
Denial Category Multi-select dropdown No FK to denial_categories All
Department Multi-select dropdown No FK to departments All
Provider Multi-select dropdown No FK to providers All

Widgets

Widget Type Required Validation Notes
Overall Denial Rate Trend Line chart Display From KPIs; time on X-axis, rate on Y-axis
Category Breakdown Stacked bar / donut chart Display Denial count/amount by category
Payer Comparison Bar chart Display Denial rate and recovery rate by payer
Top Denial Reasons Table Display Top N denial codes/categories by amount
Financial Impact KPI tiles Display Total denied, recovered, net write-off
Prevention Effectiveness Line/bar chart Display Pre vs post intervention rates

Validation Messages

Condition Message Severity
Date range > 24 months "Select a date range of 24 months or less for optimal performance." Error
No data for selected filters "No denial data available for the selected period and filters." Info

Actions / Buttons

Action Description
Apply Filters Refreshes all charts and tables.
Reset Filters Resets to default date range and all entities.
Drill-down on chart segment Opens filtered Denial Worklist (SCR-DENIALANALYSIS-001).
Export Exports current dashboard data as PDF/Excel (subject to PDPL).

Accessibility

  • Charts accompanied by data tables or “View data as table” toggle.
  • Each chart has descriptive title and aria-label summarising content.
  • Keyboard: Focusable chart segments; Enter triggers drill-down.
  • Colour palettes meet contrast requirements; patterns used in addition to colour.

Responsive / Mobile

  • Widgets stack vertically; most important KPIs at top.
  • Charts simplified (fewer labels) on small screens; pinch-to-zoom disabled.
  • Filter panel collapses into a drawer.

SCR-DENIALANALYSIS-005: Payer Scorecard

Purpose
Side-by-side comparison of payer performance (denial and appeal metrics) for contract negotiation and monitoring.

Field Specifications

Field Type Required Validation Default Notes
Period Dropdown / date range Yes Valid period Last quarter Maps to payer_denial_scorecards.period_start/end
Payer Selection Multi-select dropdown Yes FK to payers Top 5 by volume Max 10 payers at once
Metrics Selector Multi-select No Predefined metrics Default set e.g., Denial Rate, Appeal Success, Avg Resolution Days

Scorecard Table Columns

Column Type Notes
Payer Text Name and logo (if available)
Total Claims Numeric From total_claims
Total Denials Numeric From total_denials
Denial Rate Numeric (%) From denial_rate
Total Denied Amount (AED) Numeric From total_denied_amount
Total Recovered (AED) Numeric From total_recovered
Appeal Success Rate Numeric (%) From appeal_success_rate
Avg Resolution Days Numeric From avg_resolution_days
Rank Numeric From rank
Action Items Text / icon Links to prevention actions or notes

Validation Messages

Condition Message Severity
No payer selected "Select at least one payer to view the scorecard." Error
More than 10 payers selected "You can compare up to 10 payers at a time." Error
No data for selected period "No scorecard data available for the selected period." Info

Actions / Buttons

Action Description
Apply Loads scorecard for selected payers and period.
Export PDF Generates PDF report for leadership/contracting.
Export Excel Exports raw scorecard data.
View Details Opens filtered Denial Trend Dashboard for selected payer.

Accessibility

  • Scorecard table uses standard table semantics; sortable columns have aria-sort.
  • Export buttons have clear labels (e.g., "Export scorecard as PDF").
  • Keyboard: Arrow keys navigate table; Enter on payer name triggers details.

Responsive / Mobile

  • Table becomes horizontally scrollable; key columns (Payer, Denial Rate, Appeal Success) pinned.
  • Option to switch to “card view” per payer with metrics stacked.

SCR-DENIALANALYSIS-006: Prevention Action Tracker

Purpose
Track denial prevention initiatives, owners, timelines, and ROI.

Field Specifications

Field Type Required Validation Default Notes
Action List Table Display Shows all actions from denial_prevention_actions
Category Filter Dropdown No FK to denial_categories All
Payer Filter Dropdown No FK to payers All
Status Filter Dropdown No IN (Planned, In Progress, Completed, On Hold, Cancelled) All

Action Detail (edit panel)

Field Type Required Validation Default Notes
Action ID Text Display action_id
Description Textarea Yes Max 500 chars Empty description
Action Type Dropdown Yes e.g., Process Change, Training, System Change Empty action_type
Denial Category Dropdown Yes FK to denial_categories Empty denial_category_id
Payer Dropdown No FK to payers Empty payer_id
Responsible Party Dropdown Yes FK to users or departments Empty responsible_party
Target Date Date Yes ≥ current date Empty target_date
Completion Date Date No ≥ Target Date Empty completion_date
Status Dropdown Yes IN allowed statuses Planned status
Pre-intervention Rate (%) Numeric No 0–100 Empty pre_intervention_rate
Post-intervention Rate (%) Numeric No 0–100 Empty post_intervention_rate
ROI (%) Numeric Display Calculated From KPI formula

Validation Messages

Condition Message Severity
Description empty "Action description is required." Error
Target Date in past "Target date should be today or later." Warning (allow override)
Completion Date < Target Date "Completion date cannot be before target date." Error
Rate outside 0–100 "Rates must be between 0% and 100%." Error

Actions / Buttons

Action Description
New Action Creates new prevention action record.
Save Saves changes to action.
Mark Completed Sets status to Completed and prompts for completion date.
Link to Trend Opens Denial Trend Dashboard filtered to category/payer.

Accessibility

  • Status badges include text and icon; not colour-only.
  • Action detail form fully keyboard-accessible.
  • Live region for ROI recalculation updates.

Responsive / Mobile

  • Action list becomes cards; tap to open detail.
  • Date pickers use mobile-friendly controls.

SCR-DENIALANALYSIS-007: Executive Denial Summary

Purpose
High-level KPI and financial impact view for executives, with minimal operational detail.

Field Specifications

Widget Type Required Notes
Overall Denial Rate KPI tile Display From KPI definition
Recovery Rate KPI tile Display sum(recovered)/sum(denied)
Financial Impact KPI tile Display Denied, Recovered, Net Loss
Top Issues List/table Display Top 5 categories or root causes
Year-over-Year Comparison Line/column chart Display Denial rate and amount YoY
Action Plans Summary Table Display Key prevention actions and status

Filters: Date range, facility, payer (optional).

Validation Messages

Condition Message Severity
No data "No summary data available for the selected period." Info

Actions / Buttons

Action Description
Export PDF Board-ready summary export.
Drill-down Links to Denial Trend Dashboard or Payer Scorecard.

Accessibility

  • KPI tiles have text labels and numeric values; no icon-only indicators.
  • Charts have alternative text summaries.

Responsive / Mobile

  • KPI tiles in 2-per-row grid on mobile.
  • Charts stacked; summary tables scrollable horizontally.

Common UI Patterns

Patient Banner

  • Appears on SCR-DENIALANALYSIS-002 and 003.
  • Fields: Patient name (Arabic + English if available), MRN, Emirates ID (784-YYYY-NNNNNNN-C), DOB, age, gender, payer, plan, facility.
  • Behaviour:
  • Click opens patient demographics (read-only).
  • Respect UAE PDPL: only show minimum necessary identifiers based on role.
  • Accessibility:
  • Use <header> region with role="banner" and clear labels.
  • Responsive:
  • On mobile, show name + MRN + payer; other details in expandable section.

Search Components

  • Used in Denial Worklist, Trend Dashboard, Payer Scorecard.
  • Features:
  • Debounced search (300–500ms).
  • Clear button inside input.
  • Placeholder text indicating supported fields.
  • Accessibility:
  • aria-label or visible label; role="search" for main search areas.

Alert / Notification Patterns

  • Inline validation messages under fields (red text, icon, associated via aria-describedby).
  • Toast notifications for success/info (top-right, auto-dismiss, focusable).
  • Modal confirmations for destructive actions (e.g., write-off approval) with explicit Yes/No.

Loading States

  • Skeleton loaders for tables and charts.
  • Spinner with “Loading denial data…” text for screen-level loads.
  • Avoid blocking entire UI when only part of page is loading.

Arabic/English Bilingual UI

  • Full support for English and Arabic labels and content.
  • Language toggle at application level; screen respects current locale.
  • For Arabic:
  • Right-to-left layout; tables and forms mirrored.
  • Patient names and payer names shown in Arabic where available.
  • All static text (labels, messages) externalised for translation.
  • Numeric fields (amounts, dates) formatted per locale but stored in standard formats.

General Accessibility (WCAG 2.1 AA)

  • Colour contrast ≥ 4.5:1 for text; ≥ 3:1 for large text and UI components.
  • Keyboard-only operation supported for all screens.
  • Focus indicators clearly visible.
  • Use aria-live for dynamic updates (filters applied, data loaded).
  • Avoid conveying information by colour alone; always include text or icons.

Responsive / Mobile Principles

  • Breakpoints at ~768px and ~1024px.
  • Tables degrade to cards or horizontally scrollable containers.
  • Fixed headers for key actions (filters, primary buttons) where appropriate.
  • Touch-friendly controls (min 44px height) and spacing.
content/rcm/denial-analysis/04-screen-requirements.md Generated 2026-02-20 22:54