Policy & Contract Management Screen Requirements

Policy & Contract Management Screen Requirements

Screen Inventory

Screen ID Screen Name Primary Actor(s) Workflow(s) Access Level
SCR-POLICYCONTRACTMGMT-001 Payer Master List RCM Manager, Contract Manager, Contract Analyst, System Administrator WF-PCM-001, WF-PCM-006 Users with view_payer_master (implicit in manage_payer_master, view_payer_performance, system_config)
SCR-POLICYCONTRACTMGMT-002 Payer Detail / Onboarding RCM Manager, Contract Manager, System Administrator WF-PCM-001 Users with manage_payer_master or manage_payer_connectivity
SCR-POLICYCONTRACTMGMT-003 Contract Management Contract Manager, Contract Analyst, RCM Manager, Finance Director WF-PCM-002, WF-PCM-005 Users with view_contracts or view_all_contracts
SCR-POLICYCONTRACTMGMT-004 Contract Detail / Editor Contract Manager, RCM Manager, Finance Director WF-PCM-002, WF-PCM-005 Users with create_contracts, edit_contracts, approve_contracts, or final_approve_contracts
SCR-POLICYCONTRACTMGMT-005 Fee Schedule Editor Fee Schedule Analyst, RCM Manager, Contract Analyst WF-PCM-003, WF-PCM-005 Users with create_fee_schedules, edit_fee_schedules, import_tariffs, publish_fee_schedules
SCR-POLICYCONTRACTMGMT-006 Coverage Rule Builder Contract Analyst, Utilization Management Lead, RCM Manager WF-PCM-004 Users with configure_coverage_rules, override_rules
SCR-POLICYCONTRACTMGMT-007 Payer Performance Dashboard RCM Manager, Finance Director, Contract Manager WF-PCM-006 Users with view_payer_performance, payer_performance_dashboards, view_financial_reports
SCR-POLICYCONTRACTMGMT-008 Contract Renewal Alerts Contract Manager, RCM Manager, Finance Director WF-PCM-005 Users with manage_amendments, view_contracts, view_all_contracts

flowchart LR H["RCM Home / RCM Menu"] --> A["SCR-POLICYCONTRACTMGMT-001<br/>Payer Master List"] A -->|"Select Payer / New Payer"| B["SCR-POLICYCONTRACTMGMT-002<br/>Payer Detail / Onboarding"] A -->|"View Contracts"| C["SCR-POLICYCONTRACTMGMT-003<br/>Contract Management"] A -->|"Performance"| G["SCR-POLICYCONTRACTMGMT-007<br/>Payer Performance Dashboard"] B -->|"View Contracts for Payer"| C B -->|"Configure Coverage Rules"| F["SCR-POLICYCONTRACTMGMT-006<br/>Coverage Rule Builder"] C -->|"Open Contract"| D["SCR-POLICYCONTRACTMGMT-004<br/>Contract Detail / Editor"] C -->|"Renewal Alerts"| E["SCR-POLICYCONTRACTMGMT-008<br/>Contract Renewal Alerts"] D -->|"Open Fee Schedule"| FS["SCR-POLICYCONTRACTMGMT-005<br/>Fee Schedule Editor"] D -->|"View Performance"| G D -->|"Back to List"| C FS -->|"Impact Analysis"| G FS -->|"Back to Contract"| D F -->|"Test Rules"| TA["Test Claim (inline panel)"] F -->|"Activate Rules"| C E -->|"Open Contract"| D E -->|"Back to Contract List"| C G -->|"Drill-down to Contracts"| C G -->|"Drill-down to Payer"| B

Screen Specifications

SCR-POLICYCONTRACTMGMT-001: Payer Master List

Purpose

Central searchable list of all payers/TPAs with quick access to contracts, plans, connectivity status, and performance indicators. Supports payer onboarding (WF-PCM-001) and payer performance monitoring (WF-PCM-006).

Field Specifications

Field Type Required Validation Default Notes
Global Search Text input No Min 2 chars to trigger search Empty Searches payer name (EN/AR), payer code, TPA name, license numbers
Payer Type Filter Dropdown No Value in (Government, Private, Self-pay, International) All Maps to payers.payer_type
Payer Class Filter Dropdown No Value in configured payer classes All Uses master data “Payer Classification Codes”
Network Status Filter Multi-select No Values in (In-Network, Out-of-Network, Terminated) All Derived from payer_networks
eClaim Status Filter Multi-select No Values in (Configured, Not Configured, Error) All Derived from connectivity config
Active Only Toggle Checkbox No Checked Filters payers.is_active = true
Payer Name Column text Max 200 chars Shows EN with AR in smaller text below
Payer Type Column text Government / Private / etc.
Payer Class Column text e.g., THIQA, SAADA, Daman, etc.
Active Contracts Column badge Non-negative integer Count of active contracts for this payer
Network Status Column badge Highest-tier network status for current facility
eClaim Status Column badge Configured / Not Configured / Error
Actions Column buttons View Payer, View Contracts, Performance

Validation Messages

Condition Message Severity
Search < 2 chars and user presses Enter "Enter at least 2 characters to search payers." Info
No results "No payers match the selected filters." Info
User without manage permission clicks "New Payer" "You do not have permission to create or edit payer records." Error
Connectivity error flag present "Some payers have connectivity errors. Filter by eClaim Status = 'Error' to review." Warning (banner)

Actions / Buttons

  • New Payer (top-right, primary)
  • Visible to: RCM Manager, System Administrator with manage_payer_master
  • Action: Opens SCR-POLICYCONTRACTMGMT-002 in create mode.
  • View Payer (row action)
  • Opens SCR-POLICYCONTRACTMGMT-002 for selected payer.
  • View Contracts (row action)
  • Opens SCR-POLICYCONTRACTMGMT-003 filtered by payer.
  • Performance (row action)
  • Opens SCR-POLICYCONTRACTMGMT-007 filtered by payer.
  • Export List (toolbar)
  • Exports current filtered list to CSV (payer name, type, class, active contracts, status).

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;">Payer Master List</h3>
    <button type="button" style="background:#fff;color:#1a73e8;border:none;padding:6px 12px;border-radius:4px;font-weight:bold;">+ New Payer</button>
  </div>
  <div style="padding: 16px;">
    <!-- Filters -->
    <div style="display:flex; flex-wrap:wrap; gap:12px; margin-bottom:12px;">
      <div style="flex:2 1 220px;">
        <label for="search" style="display:block;font-size:12px;color:#555;">Search</label>
        <input id="search" type="text" placeholder="Search by payer name, code, license..." style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
      </div>
      <div style="flex:1 1 150px;">
        <label style="display:block;font-size:12px;color:#555;">Payer Type</label>
        <select style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
          <option>All</option><option>Government</option><option>Private</option><option>Self-pay</option><option>International</option>
        </select>
      </div>
      <div style="flex:1 1 150px;">
        <label style="display:block;font-size:12px;color:#555;">Payer Class</label>
        <select style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
          <option>All</option><option>THIQA</option><option>Daman</option><option>Oman Insurance</option>
        </select>
      </div>
      <div style="flex:1 1 150px;">
        <label style="display:block;font-size:12px;color:#555;">Network Status</label>
        <select style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
          <option>All</option><option>In-Network</option><option>Out-of-Network</option><option>Terminated</option>
        </select>
      </div>
      <div style="flex:0 0 140px; display:flex; align-items:flex-end;">
        <label style="font-size:12px;color:#555; margin-right:6px;">Active only</label>
        <input type="checkbox" checked>
      </div>
    </div>

    <!-- Table -->
    <div style="border:1px solid #ddd;border-radius:4px;overflow:auto; max-height:420px;">
      <table style="width:100%;border-collapse:collapse;font-size:13px;">
        <thead style="background:#f5f5f5;">
          <tr>
            <th style="text-align:left;padding:8px;border-bottom:1px solid #ddd;">Payer Name</th>
            <th style="text-align:left;padding:8px;border-bottom:1px solid #ddd;">Type</th>
            <th style="text-align:left;padding:8px;border-bottom:1px solid #ddd;">Class</th>
            <th style="text-align:center;padding:8px;border-bottom:1px solid #ddd;">Active Contracts</th>
            <th style="text-align:center;padding:8px;border-bottom:1px solid #ddd;">Network Status</th>
            <th style="text-align:center;padding:8px;border-bottom:1px solid #ddd;">eClaim Status</th>
            <th style="text-align:center;padding:8px;border-bottom:1px solid #ddd;">Actions</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td style="padding:8px;border-bottom:1px solid #eee;">
              Daman Health Insurance<br>
              <span style="font-size:11px;color:#777;">ضمان للتأمين الصحي</span>
            </td>
            <td style="padding:8px;border-bottom:1px solid #eee;">Government</td>
            <td style="padding:8px;border-bottom:1px solid #eee;">THIQA</td>
            <td style="padding:8px;border-bottom:1px solid #eee;text-align:center;">5</td>
            <td style="padding:8px;border-bottom:1px solid #eee;text-align:center;">
              <span style="background:#e6f4ea;color:#137333;padding:2px 6px;border-radius:10px;font-size:11px;">In-Network</span>
            </td>
            <td style="padding:8px;border-bottom:1px solid #eee;text-align:center;">
              <span style="background:#e8f0fe;color:#1a73e8;padding:2px 6px;border-radius:10px;font-size:11px;">Configured</span>
            </td>
            <td style="padding:8px;border-bottom:1px solid #eee;text-align:center;">
              <button style="margin:0 2px;padding:2px 6px;font-size:11px;">View</button>
              <button style="margin:0 2px;padding:2px 6px;font-size:11px;">Contracts</button>
              <button style="margin:0 2px;padding:2px 6px;font-size:11px;">Performance</button>
            </td>
          </tr>
          <!-- more rows -->
        </tbody>
      </table>
    </div>
  </div>
</div>

Accessibility (WCAG 2.1 AA)

  • Table uses <th scope="col"> for headers.
  • Filters and search have associated <label> elements.
  • Row actions accessible via keyboard (Tab/Shift+Tab) and have descriptive aria-label (e.g., aria-label="View contracts for Daman").
  • Colour-coded badges include text labels; colour is not the only indicator.
  • Live region for global messages (aria-live="polite").

Responsive / Mobile

  • On screens < 768px:
  • Filters collapse into an accordion “Filters” panel.
  • Table switches to card layout: each payer displayed as a card with key fields and action buttons stacked.
  • Touch targets (buttons, checkboxes) minimum 44x44 px.
  • Horizontal scrolling allowed for table on small screens.

SCR-POLICYCONTRACTMGMT-002: Payer Detail / Onboarding

Purpose

Create and maintain payer master data, including demographics, licensing, contacts, connectivity configuration (eClaimLink, DOH eClaims), and associated plans. Supports payer onboarding workflow (WF-PCM-001).

Layout Overview

  • Header: Payer name, status (Active/Inactive), quick actions.
  • Tabs: 1. General Info (demographics, licenses, classification) 2. Contacts 3. Plans 4. Connectivity & Submission 5. Notes & Attachments

Key Field Specifications (General Info Tab)

Field Type Required Validation Default Notes
Payer Name (English) Text Yes 3–200 chars; letters, numbers, spaces, & Stored as payers.payer_name_en
Payer Name (Arabic) Text Recommended 3–200 chars; Arabic Unicode range dir="rtl" in UI
Payer Code Text Yes Max 20 chars; unique Auto-suggest from name Used internally and for mapping to DHA/DOH codes
Payer Type Dropdown Yes In (Government, Private, Self-pay, International) Master data
Payer Class Dropdown Yes Value from “Payer Classification Codes” e.g., THIQA, SAADA
TPA Name Text No Max 200 chars If payer uses a TPA
DHA License Number Text Conditional Alphanumeric, max 30 Required if payer operates in Dubai
DOH License Number Text Conditional Alphanumeric, max 30 Required if payer operates in Abu Dhabi
Is Active Toggle Yes Boolean On Deactivation requires confirmation dialog
Primary Email Email Yes Valid email format Used for notifications
Primary Phone Text Yes UAE format +971 5X XXX XXXX or landline Input mask
Address (EN) Textarea No Max 300 chars Include PO Box, Emirate
Address (AR) Textarea No Max 300 chars dir="rtl"
Notes Textarea No Max 1000 chars Internal notes, not sent to payers

Connectivity & Submission Tab Fields (subset)

Field Type Required Validation Default Notes
eClaimLink Enabled Checkbox No Off For DHA Dubai
eClaimLink Payer ID Text Conditional Required if eClaimLink Enabled; max 20 chars Must match DHA registry
DOH eClaims Enabled Checkbox No Off For Abu Dhabi
DOH Payer ID Text Conditional Required if DOH eClaims Enabled; max 20 chars Must match DOH registry
Submission Channel Multi-select Yes At least one selected Portal, SFTP, API, Clearinghouse
Claim Submission Deadline Numeric No 0–365 90 Days from DOS per contract default
Resubmission Limit Numeric No 0–10 2 Number of allowed resubmissions

Validation Messages

Condition Message Severity
Missing English name "Payer Name (English) is required." Error
Duplicate payer code "Payer Code already exists. Please choose a different code." Error
eClaimLink enabled but ID empty "eClaimLink Payer ID is required when eClaimLink is enabled." Error
Invalid UAE phone format "Enter a valid UAE phone number, e.g., +971 50 123 4567." Error
Deactivating payer with active contracts "This payer has active contracts. Deactivation will prevent new claims. Proceed?" Warning (confirmation)

Actions / Buttons

  • Save: Validates current tab and saves payer record.
  • Save & Close: Saves and returns to Payer Master List.
  • Cancel: Discards unsaved changes (confirmation if dirty).
  • Add Contact (Contacts tab): Opens inline row for new contact.
  • Add Plan (Plans tab): Opens plan creation dialog (links to insurance_plans).

HTML Wireframe Mockup (General Info + Tabs)

Show HTML code
HTML
<div style="font-family: Arial, sans-serif; max-width: 960px; margin: 0 auto; border: 1px solid #ccc; border-radius: 8px; overflow: hidden;">
  <div style="background:#1a73e8;color:#fff;padding:12px 20px;display:flex;justify-content:space-between;align-items:center;">
    <div>
      <h3 style="margin:0;">Payer Detail / Onboarding</h3>
      <span style="font-size:12px;opacity:0.9;">Status: <strong>Active</strong></span>
    </div>
    <div>
      <button style="margin-right:8px;padding:6px 12px;border-radius:4px;border:1px solid #fff;background:#1a73e8;color:#fff;">Cancel</button>
      <button style="margin-right:8px;padding:6px 12px;border-radius:4px;border:none;background:#fff;color:#1a73e8;font-weight:bold;">Save</button>
      <button style="padding:6px 12px;border-radius:4px;border:none;background:#0b5ed7;color:#fff;font-weight:bold;">Save &amp; Close</button>
    </div>
  </div>
  <div style="padding:16px;">
    <!-- Tabs -->
    <div style="border-bottom:1px solid #ddd;margin-bottom:12px;">
      <button style="border:none;background:#fff;border-bottom:3px solid #1a73e8;padding:8px 12px;font-weight:bold;">General Info</button>
      <button style="border:none;background:#fff;border-bottom:3px solid transparent;padding:8px 12px;">Contacts</button>
      <button style="border:none;background:#fff;border-bottom:3px solid transparent;padding:8px 12px;">Plans</button>
      <button style="border:none;background:#fff;border-bottom:3px solid transparent;padding:8px 12px;">Connectivity &amp; Submission</button>
      <button style="border:none;background:#fff;border-bottom:3px solid transparent;padding:8px 12px;">Notes &amp; Attachments</button>
    </div>

    <!-- General Info Form -->
    <div style="display:flex;flex-wrap:wrap;gap:16px;">
      <div style="flex:1 1 260px;">
        <label style="display:block;font-size:12px;color:#555;">Payer Name (English) *</label>
        <input type="text" style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;" placeholder="e.g., Daman Health Insurance">
      </div>
      <div style="flex:1 1 260px;">
        <label style="display:block;font-size:12px;color:#555;">Payer Name (Arabic)</label>
        <input type="text" style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;direction:rtl;" placeholder="مثال: ضمان للتأمين الصحي">
      </div>
      <div style="flex:0.7 1 180px;">
        <label style="display:block;font-size:12px;color:#555;">Payer Code *</label>
        <input type="text" style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;" placeholder="DAMAN">
      </div>
      <div style="flex:0.7 1 180px;">
        <label style="display:block;font-size:12px;color:#555;">Payer Type *</label>
        <select style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
          <option>Government</option><option>Private</option><option>Self-pay</option><option>International</option>
        </select>
      </div>
      <div style="flex:0.7 1 180px;">
        <label style="display:block;font-size:12px;color:#555;">Payer Class *</label>
        <select style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
          <option>THIQA</option><option>Daman</option><option>Oman Insurance</option>
        </select>
      </div>
      <div style="flex:1 1 260px;">
        <label style="display:block;font-size:12px;color:#555;">DHA License Number</label>
        <input type="text" style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
      </div>
      <div style="flex:1 1 260px;">
        <label style="display:block;font-size:12px;color:#555;">DOH License Number</label>
        <input type="text" style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
      </div>
      <div style="flex:1 1 260px;">
        <label style="display:block;font-size:12px;color:#555;">Primary Email *</label>
        <input type="email" style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;" placeholder="[email protected]">
      </div>
      <div style="flex:1 1 260px;">
        <label style="display:block;font-size:12px;color:#555;">Primary Phone *</label>
        <input type="text" style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;" placeholder="+971 50 123 4567">
      </div>
      <div style="flex:1 1 260px;display:flex;align-items:flex-end;">
        <label style="font-size:12px;color:#555;margin-right:8px;">Active</label>
        <input type="checkbox" checked>
      </div>
    </div>
  </div>
</div>

Accessibility

  • Tabs implemented with proper ARIA roles (role="tablist", role="tab", aria-selected).
  • Arabic fields use lang="ar" and dir="rtl" to aid screen readers.
  • Error messages associated with fields via aria-describedby.
  • Connectivity status changes announced via aria-live="polite".

Responsive / Mobile

  • Tabs collapse into a dropdown “Section” selector on very small screens.
  • Form fields stack in a single column; labels remain above inputs.
  • Contacts and Plans tables switch to card layout with key fields.

SCR-POLICYCONTRACTMGMT-003: Contract Management

Purpose

Manage the list of contracts across all payers and facilities: search, filter, monitor status and expiry, and access contract details. Supports WF-PCM-002 and WF-PCM-005.

Field Specifications

Field Type Required Validation Default Notes
Payer Filter Autocomplete dropdown No Must match existing payer All Filters by contracts.payer_id
Facility Filter Dropdown No Must match existing facility Current facility (if scoped) FK to facilities
Status Filter Multi-select No Values in (Draft, In Review, Approved, Active, Expired, Terminated) Active, In Review
Expiry Range Date range picker No Start <= End Next 12 months Used for expiry alerts
Show Expiring Only Checkbox No Off Shows contracts expiring within 90/60/30 days
Contract List Columns See below

Contract List Columns

Column Description
Contract ID Internal ID / code
Payer Name EN/AR
Facility Facility name
Contract Type From master data (fee-for-service, per diem, etc.)
Effective Date Start date
Expiry Date End date
Days to Expiry Calculated; negative if already expired
Status Workflow status
Version Current version number
Expiry Alert Badge: 90 / 60 / 30 days, Expired
Actions View / Edit / Renew / Download PDF

Validation Messages

Condition Message Severity
Invalid date range "Expiry 'From' date must be before 'To' date." Error
No contracts found "No contracts match the selected filters." Info
User without edit permission clicks Edit "You have read-only access to contracts in this module." Error

Actions / Buttons

  • New Contract: Opens SCR-POLICYCONTRACTMGMT-004 in create mode.
  • View / Edit: Opens SCR-POLICYCONTRACTMGMT-004 for selected contract.
  • Renew: Opens SCR-POLICYCONTRACTMGMT-004 pre-populated as new version.
  • Download PDF: Downloads latest signed contract document.
  • Go to Renewal Alerts: Opens SCR-POLICYCONTRACTMGMT-008 with current filters.

Accessibility

  • Expiry alerts use text badges (e.g., "30 days", "Expired") plus colour.
  • Table is keyboard navigable; row focus visible.
  • Filters have labels and can be operated via keyboard only.

Responsive / Mobile

  • On small screens, contract rows become cards with key fields and action buttons.
  • Expiry badges remain visible at top of each card.

SCR-POLICYCONTRACTMGMT-004: Contract Detail / Editor

Purpose

Create, edit, review, approve, and digitally sign contracts, including terms, covered facilities, payment terms, and linkage to fee schedules. Supports WF-PCM-002 and WF-PCM-005.

Layout Overview

  • Header: Contract ID, payer, facility, status, version, quick actions.
  • Left column: Contract metadata and terms.
  • Right column: Approval workflow, version history, attachments.
  • Tabs or sections: Overview, Terms & Rates, Covered Services & Exclusions, Approval & Signatures.

Key Field Specifications (Overview / Metadata)

Field Type Required Validation Default Notes
Payer Autocomplete Yes Must match existing payer From navigation context FK to payers
Facility Dropdown Yes Must match existing facility Current facility FK to facilities
Contract Type Dropdown Yes From “Contract Types” master
Rate Methodology Dropdown Yes From “Rate Methodologies” master e.g., % of DHA tariff
Effective Date Date picker Yes <= Expiry Date
Expiry Date Date picker Yes >= Effective Date
Auto-Renew Checkbox No Off
Payment Terms (days) Numeric Yes 0–365 60 contracts.payment_terms_days
Status Read-only dropdown System Workflow states Draft Controlled by workflow
Document Path File upload Conditional PDF only, max size per policy Required before final approval

Terms & Rates Section (subset)

Field Type Required Validation Default Notes
Base Tariff Source Dropdown Yes (DHA, DOH, Custom) Drives fee schedule defaults
Discount / Markup (%) Numeric No -100 to 500 0 Applied to base tariff
Covered Facilities Multi-select Yes At least one facility Current facility For multi-facility groups
Notes on Penalties Textarea No Max 1000 chars Late payment penalties, etc.

Approval & Signatures Section

Field Type Required Validation Default Notes
Approval Chain Ordered list Yes At least one approver From template Users with approve permissions
Current Approver Read-only System Based on workflow state
Digital Signature (Internal) Signature control Conditional Required for final approval Uses enterprise signing service
Payer Signature Status Read-only Pending / Signed Manual update or integration

Validation Messages

Condition Message Severity
Missing payer "Payer is required." Error
Effective date after expiry "Expiry Date must be on or after Effective Date." Error
Attempt to activate without document "Signed contract document must be uploaded before activation." Error
Missing approval chain "At least one approver is required in the approval chain." Error
User not in approval chain attempts approve "You are not an approver for this contract." Error

Actions / Buttons

  • Save Draft: Saves without changing status.
  • Submit for Approval: Moves status from Draft to In Review; notifies first approver.
  • Approve: For current approver; moves to next approver or Approved.
  • Reject: Sends back to Draft with comment.
  • Activate Contract: Available after Approved and signed; sets status to Active.
  • Generate PDF: Renders contract summary to PDF.
  • Compare Versions: Opens side-by-side comparison with previous version.

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:#fff;padding:12px 20px;display:flex;justify-content:space-between;align-items:center;">
    <div>
      <h3 style="margin:0;">Contract Detail / Editor</h3>
      <span style="font-size:12px;">Contract ID: CT-2026-001 &nbsp;|&nbsp; Status: <strong>Draft</strong> &nbsp;|&nbsp; Version: 3</span>
    </div>
    <div>
      <button style="margin-right:6px;padding:6px 10px;border-radius:4px;border:1px solid #fff;background:#1a73e8;color:#fff;">Save Draft</button>
      <button style="margin-right:6px;padding:6px 10px;border-radius:4px;border:none;background:#fff;color:#1a73e8;font-weight:bold;">Submit for Approval</button>
      <button style="padding:6px 10px;border-radius:4px;border:none;background:#0b5ed7;color:#fff;font-weight:bold;">Generate PDF</button>
    </div>
  </div>
  <div style="display:flex; padding:16px; gap:16px;">
    <!-- Left column -->
    <div style="flex:2 1 0;">
      <h4 style="margin-top:0;">Overview</h4>
      <div style="display:flex;flex-wrap:wrap;gap:12px;margin-bottom:12px;">
        <div style="flex:1 1 220px;">
          <label style="display:block;font-size:12px;color:#555;">Payer *</label>
          <input type="text" style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;" placeholder="Start typing payer name...">
        </div>
        <div style="flex:1 1 220px;">
          <label style="display:block;font-size:12px;color:#555;">Facility *</label>
          <select style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
            <option>Dubai General Hospital</option>
            <option>Abu Dhabi Medical Center</option>
          </select>
        </div>
        <div style="flex:1 1 180px;">
          <label style="display:block;font-size:12px;color:#555;">Contract Type *</label>
          <select style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
            <option>Fee-for-service</option><option>Per diem</option><option>Case rate</option><option>Capitation</option>
          </select>
        </div>
        <div style="flex:1 1 180px;">
          <label style="display:block;font-size:12px;color:#555;">Rate Methodology *</label>
          <select style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
            <option>100% of DHA tariff</option><option>90% of DOH tariff</option><option>Custom</option>
          </select>
        </div>
        <div style="flex:1 1 160px;">
          <label style="display:block;font-size:12px;color:#555;">Effective Date *</label>
          <input type="date" style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
        </div>
        <div style="flex:1 1 160px;">
          <label style="display:block;font-size:12px;color:#555;">Expiry Date *</label>
          <input type="date" style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
        </div>
        <div style="flex:0.5 1 120px;display:flex;align-items:flex-end;">
          <label style="font-size:12px;color:#555;margin-right:6px;">Auto-renew</label>
          <input type="checkbox">
        </div>
        <div style="flex:0.5 1 120px;">
          <label style="display:block;font-size:12px;color:#555;">Payment Terms (days) *</label>
          <input type="number" style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;" value="60">
        </div>
      </div>

      <h4>Terms &amp; Rates</h4>
      <div style="display:flex;flex-wrap:wrap;gap:12px;margin-bottom:8px;">
        <div style="flex:1 1 200px;">
          <label style="display:block;font-size:12px;color:#555;">Base Tariff Source *</label>
          <select style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
            <option>DHA</option><option>DOH</option><option>Custom</option>
          </select>
        </div>
        <div style="flex:1 1 160px;">
          <label style="display:block;font-size:12px;color:#555;">Discount / Markup (%)</label>
          <input type="number" style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;" value="0">
        </div>
      </div>
      <textarea style="width:100%;min-height:80px;padding:6px;border:1px solid #ccc;border-radius:4px;font-size:12px;" placeholder="Additional terms, penalties, dispute resolution..."></textarea>
    </div>

    <!-- Right column -->
    <div style="flex:1 1 0;">
      <h4 style="margin-top:0;">Approval Workflow</h4>
      <ol style="font-size:13px;padding-left:18px;">
        <li>Contract Manager (Pending)</li>
        <li>RCM Manager</li>
        <li>Finance Director</li>
      </ol>
      <button style="margin-top:6px;padding:6px 10px;border-radius:4px;border:none;background:#34a853;color:#fff;">Approve</button>
      <button style="margin-top:6px;margin-left:4px;padding:6px 10px;border-radius:4px;border:1px solid #d93025;background:#fff;color:#d93025;">Reject</button>

      <h4 style="margin-top:16px;">Version History</h4>
      <ul style="font-size:12px;padding-left:18px;">
        <li>v3 &mdash; Draft &mdash; 07 Feb 2026 &mdash; Edited by Ahmed</li>
        <li>v2 &mdash; Active &mdash; 01 Jan 2025 &mdash; Approved by Fatima</li>
      </ul>
      <button style="margin-top:6px;padding:6px 10px;border-radius:4px;border:1px solid #ccc;background:#fff;">Compare Versions</button>

      <h4 style="margin-top:16px;">Signed Document</h4>
      <input type="file" style="font-size:12px;">
    </div>
  </div>
</div>

Accessibility

  • Approval buttons have clear labels and confirmation dialogs for Reject.
  • Version history list is structured with <ul> and <li> for screen readers.
  • File upload control labelled "Signed Contract PDF".

Responsive / Mobile

  • Right column stacks below left column.
  • Approval workflow and version history become collapsible sections.

SCR-POLICYCONTRACTMGMT-005: Fee Schedule Editor

Purpose

Spreadsheet-style interface to manage fee schedule items (CPT to rate mapping), bulk import tariffs, and run rate change impact analysis. Supports WF-PCM-003 and WF-PCM-005.

Field Specifications

Header fields:

Field Type Required Validation Default Notes
Fee Schedule Name Text Yes 3–200 chars contract_fee_schedules.schedule_name
Linked Contract Read-only text Yes Must reference existing contract From context
Base Tariff Dropdown Yes (DHA, DOH, Custom) From contract
Effective Date Date Yes <= Expiry Date
Expiry Date Date No >= Effective Date
Status Dropdown Yes (Draft, In Review, Active, Archived) Draft

Grid columns (fee_schedule_items):

Column Type Required Validation Notes
CPT Code Autocomplete Yes Must exist in CPT master cpt_code
Description Text (read-only or editable) Yes Max 255 chars Defaults from CPT master
Facility Rate Numeric Conditional >= 0 Required if facility billing used
Professional Rate Numeric Conditional >= 0 Required if professional billing used
Modifier Text No Valid CPT modifier format
Rate Type Dropdown Yes (Flat, % of Tariff) Flat
Active Checkbox Yes Boolean On

Validation Messages

Condition Message Severity
Missing fee schedule name "Fee Schedule Name is required." Error
CPT code not found "CPT code not found in master list." Error
Negative rate "Rates must be zero or positive." Error
Attempt to activate with no items "At least one active fee schedule item is required before activation." Error

Actions / Buttons

  • Import Tariff (CSV): Uploads CSV; maps columns to CPT, rates.
  • Add Row: Adds new fee schedule item row.
  • Delete Row: Marks row as inactive (soft delete).
  • Run Impact Analysis: Compares against previous schedule; opens summary panel.
  • Publish: Sets status to Active (with confirmation).

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:#fff;padding:12px 20px;display:flex;justify-content:space-between;align-items:center;">
    <h3 style="margin:0;">Fee Schedule Editor</h3>
    <div>
      <button style="margin-right:6px;padding:6px 10px;border-radius:4px;border:1px solid #fff;background:#1a73e8;color:#fff;">Import CSV</button>
      <button style="margin-right:6px;padding:6px 10px;border-radius:4px;border:none;background:#fff;color:#1a73e8;font-weight:bold;">Run Impact Analysis</button>
      <button style="padding:6px 10px;border-radius:4px;border:none;background:#34a853;color:#fff;font-weight:bold;">Publish</button>
    </div>
  </div>
  <div style="padding:12px;">
    <!-- Header fields -->
    <div style="display:flex;flex-wrap:wrap;gap:12px;margin-bottom:12px;">
      <div style="flex:1 1 260px;">
        <label style="display:block;font-size:12px;color:#555;">Fee Schedule Name *</label>
        <input type="text" style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;" placeholder="DHA 2026 Outpatient">
      </div>
      <div style="flex:1 1 260px;">
        <label style="display:block;font-size:12px;color:#555;">Linked Contract</label>
        <input type="text" disabled style="width:100%;padding:6px;border:1px solid #eee;border-radius:4px;background:#f9f9f9;" value="CT-2026-001 - Daman / Dubai General Hospital">
      </div>
      <div style="flex:0.7 1 180px;">
        <label style="display:block;font-size:12px;color:#555;">Base Tariff *</label>
        <select style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
          <option>DHA</option><option>DOH</option><option>Custom</option>
        </select>
      </div>
      <div style="flex:0.7 1 160px;">
        <label style="display:block;font-size:12px;color:#555;">Effective Date *</label>
        <input type="date" style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
      </div>
      <div style="flex:0.7 1 160px;">
        <label style="display:block;font-size:12px;color:#555;">Expiry Date</label>
        <input type="date" style="width:100%;padding:6px;border:1px solid #ccc;border-radius:4px;">
      </div>
    </div>

    <!-- Grid -->
    <div style="margin-top:8px;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center;">
      <span style="font-size:12px;color:#555;">Items</span>
      <button style="padding:4px 8px;border-radius:4px;border:1px solid #ccc;background:#fff;font-size:12px;">+ Add Row</button>
    </div>
    <div style="border:1px solid #ddd;border-radius:4px;overflow:auto;max-height:420px;">
      <table style="width:100%;border-collapse:collapse;font-size:12px;">
        <thead style="background:#f5f5f5;">
          <tr>
            <th style="padding:6px;border-bottom:1px solid #ddd;">CPT Code</th>
            <th style="padding:6px;border-bottom:1px solid #ddd;">Description</th>
            <th style="padding:6px;border-bottom:1px solid #ddd;">Facility Rate (AED)</th>
            <th style="padding:6px;border-bottom:1px solid #ddd;">Professional Rate (AED)</th>
            <th style="padding:6px;border-bottom:1px solid #ddd;">Modifier</th>
            <th style="padding:6px;border-bottom:1px solid #ddd;">Rate Type</th>
            <th style="padding:6px;border-bottom:1px solid #ddd;">Active</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td style="padding:4px;border-bottom:1px solid #eee;"><input type="text" value="99213" style="width:100%;border:1px solid #ccc;border-radius:3px;padding:3px;"></td>
            <td style="padding:4px;border-bottom:1px solid #eee;">Office/outpatient visit est</td>
            <td style="padding:4px;border-bottom:1px solid #eee;"><input type="number" value="250" style="width:100%;border:1px solid #ccc;border-radius:3px;padding:3px;"></td>
            <td style="padding:4px;border-bottom:1px solid #eee;"><input type="number" value="150" style="width:100%;border:1px solid #ccc;border-radius:3px;padding:3px;"></td>
            <td style="padding:4px;border-bottom:1px solid #eee;"><input type="text" style="width:100%;border:1px solid #ccc;border-radius:3px;padding:3px;"></td>
            <td style="padding:4px;border-bottom:1px solid #eee;">
              <select style="width:100%;border:1px solid #ccc;border-radius:3px;padding:3px;">
                <option>Flat</option><option>% of Tariff</option>
              </select>
            </td>
            <td style="padding:4px;border-bottom:1px solid #eee;text-align:center;">
              <input type="checkbox" checked>
            </td>
          </tr>
          <!-- more rows -->
        </tbody>
      </table>
    </div>
  </div>
</div>

Accessibility

  • Grid cells are keyboard navigable; use arrow keys and Tab.
  • Import CSV button has aria-describedby pointing to help text describing required format.
  • Error cells highlighted with both colour and icon plus tooltip text.

Responsive / Mobile

  • Grid becomes horizontally scrollable; header row remains sticky.
  • On very small screens, an alternative “form per item” view may be offered.

SCR-POLICYCONTRACTMGMT-006: Coverage Rule Builder

Purpose

Visual rule builder to configure coverage and medical necessity rules per payer/plan, including CPT/ICD mappings, age/gender limits, frequency limits, and prior auth flags. Supports WF-PCM-004.

Field Specifications

Field Type Required Validation Default Notes
Rule Name Text Yes 3–200 chars Human-readable label
Rule Type Dropdown Yes (Coverage, Benefit Limit, Clinical Pathway) Coverage coverage_rules.rule_type
Payer Autocomplete Yes Must match existing payer
Plan Autocomplete No Must match plan for payer All plans Optional for payer-wide rules
CPT Codes Multi-select autocomplete Yes Must exist in CPT master Stored as list/JSON
ICD-10-AM Codes Multi-select autocomplete No Must exist in ICD-10-AM master
Age Min Numeric No 0–120
Age Max Numeric No 0–120; >= Age Min
Gender Dropdown No (Any, Male, Female) Any
Frequency Limit Numeric No >= 0
Frequency Period Dropdown Conditional (Per Day, Per Month, Per Year, Lifetime) Per Year Required if Frequency Limit > 0
Requires Prior Auth Checkbox No Off
Effective Date Date Yes Today
Active Toggle Yes Boolean On

Test Claim Panel

Field Type Required Validation Notes
Test CPT Autocomplete Yes CPT exists
Test ICD-10-AM Autocomplete No ICD exists
Patient Age Numeric Yes 0–120
Patient Gender Dropdown Yes (Male, Female)

Validation Messages

Condition Message Severity
Missing rule name "Rule Name is required." Error
No CPT codes selected "At least one CPT code must be selected." Error
Frequency limit without period "Select a frequency period when a frequency limit is set." Error
Age Max < Age Min "Maximum age must be greater than or equal to minimum age." Error
Test claim fails rule "Test claim does NOT meet coverage criteria. Reason: [detail]." Info

Actions / Buttons

  • Save Rule: Saves rule in Draft or Active state depending on toggle.
  • Test Claim: Runs test against current rule; shows pass/fail.
  • Activate / Deactivate: Toggles is_active with confirmation.
  • Clone Rule: Copies current rule to new draft.

Accessibility

  • Rule builder uses clear labels and grouping; drag-and-drop (if used) must have keyboard alternative (e.g., “Add condition” buttons).
  • Test result displayed in aria-live="polite" region.

Responsive / Mobile

  • Conditions stack vertically; multi-column layout collapses.
  • Test panel collapses into an accordion section.

SCR-POLICYCONTRACTMGMT-007: Payer Performance Dashboard

Purpose

Executive dashboard showing payer scorecards: denial rate, average days to pay, reimbursement variance, volume trends, and top denial reasons. Supports WF-PCM-006.

Field Specifications

Field Type Required Validation Default Notes
Date Range Date range picker Yes Start <= End Last 3 months
Payer Filter Multi-select No Must match existing payers All
Metric Cards Display Denial Rate, Avg Days to Pay, Reimbursement Variance, Volume
Payer Scorecard Table Display One row per payer
Top Denial Reasons Chart Display Bar/pie chart

Validation Messages

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

Actions / Buttons

  • Export PDF: Exports dashboard snapshot.
  • Export Data (CSV): Exports underlying metrics.
  • Drill-down: Clicking a payer row opens detailed view or Contract Management filtered by payer.

Accessibility

  • Charts must have text equivalents (tables or lists).
  • Colour-coded metrics accompanied by text labels and numeric values.

Responsive / Mobile

  • Metric cards stack vertically.
  • Charts resize; some may collapse into summary tables.

SCR-POLICYCONTRACTMGMT-008: Contract Renewal Alerts

Purpose

Dedicated view for expiring contracts with 90/60/30-day alerts, renewal status, and quick actions to start renewal or amendment. Supports WF-PCM-005.

Field Specifications

Field Type Required Validation Default Notes
Alert Window Filter Dropdown No (30 days, 60 days, 90 days, Expired) 90 days
Payer Filter Autocomplete No Must match payer All
Renewal Status Filter Dropdown No (Not Started, In Negotiation, Pending Approval, Renewed) All
Expiring Contracts List Table See columns below

Columns:

Column Description
Payer Payer name
Facility Facility name
Contract ID ID/code
Expiry Date Date
Days to Expiry Numeric
Renewal Status Status badge
Performance Summary Key metrics (denial rate, avg days to pay)
Actions Open Contract, Start Renewal

Validation Messages

Condition Message Severity
No expiring contracts "No contracts are due for renewal in the selected window." Info

Actions / Buttons

  • Start Renewal: Creates new contract version and opens SCR-POLICYCONTRACTMGMT-004.
  • Mark as In Negotiation: Updates renewal status.
  • View Performance: Opens dashboard filtered to payer.

Accessibility

  • Alerts use text badges ("90 days", "Expired") plus colour.
  • Table is keyboard accessible.

Responsive / Mobile

  • Expiring contracts displayed as cards with prominent Days to Expiry badge.
  • Actions presented as buttons at bottom of each card.

Common UI Patterns

1. Search Components

  • Global search inputs with:
  • Minimum character thresholds (2–3 chars).
  • Debounced queries (e.g., 300–500 ms).
  • Clear button (x) to reset.
  • Autocomplete lists:
  • Keyboard navigation (Up/Down, Enter, Esc).
  • aria-expanded, aria-activedescendant, role="listbox" semantics.

2. Alert / Notification Patterns

  • Inline Field Errors:
  • Red border, small text below field.
  • Example: "This field is required."
  • Form-level Alerts:
  • Banner at top of form for cross-field issues.
  • Colours: red (error), amber (warning), blue (info), green (success).
  • Include icon + text; no colour-only signalling.
  • Expiry Alerts:
  • Badges with text: "90 days", "60 days", "30 days", "Expired".
  • Used consistently in Contract Management and Renewal Alerts.

3. Loading States

  • Skeleton loaders for tables and dashboards.
  • Spinners for long-running operations (imports, impact analysis).
  • aria-busy="true" set on containers during loading.

4. Bilingual (Arabic/English) UI Considerations

  • All payer and plan names stored in both English and Arabic where available.
  • Display pattern: English on first line, Arabic on second line with dir="rtl" and lang="ar".
  • Module supports language toggle at application level:
  • Labels, buttons, and messages localised.
  • For full Arabic UI, layout may switch to RTL; ensure mirrored alignment and navigation.
  • Numeric fields (rates, days) remain LTR even in Arabic UI.

5. Accessibility (WCAG 2.1 AA)

  • Consistent use of <label> for all inputs; for attribute linked to id.
  • Keyboard-only operation supported for all actions (no mouse required).
  • Visible focus indicators on all interactive elements.
  • Sufficient colour contrast (minimum 4.5:1 for normal text).
  • Use of ARIA roles and properties for:
  • Tabs (role="tablist", role="tab", aria-selected).
  • Dialogs (modals) with role="dialog" and focus trapping.
  • Live regions (aria-live) for dynamic messages.

6. Responsive / Mobile Behaviour

  • Breakpoints:
  • ≥ 1024px: full desktop layout with multi-column forms and tables.
  • 768–1023px: two-column forms where possible; tables horizontally scrollable.
  • < 768px: single-column forms; tables convert to card layouts where appropriate.
  • Touch-friendly:
  • Buttons and interactive elements at least 44x44 px.
  • Adequate spacing between tap targets.

7. Shared Patterns with Other RCM Modules

  • Consistent “RCM Home / RCM Menu” entry point.
  • Standard breadcrumb: RCM > Policy & Contract Management > [Screen].
  • Standard confirmation dialogs for destructive actions (deactivation, rejection, etc.).

This specification is intended to be developer-ready and should be used alongside the data model and workflow specifications for the policy-contract-mgmt module.

content/rcm/policy-contract-mgmt/04-screen-requirements.md Generated 2026-02-20 22:54