Policy & Contract Management KPIs & Reporting

Policy & Contract Management KPIs & Reporting

KPI Summary

KPI ID KPI Name Formula (Conceptual) Target Data Source Frequency
KPI-PCM-001 Contract Coverage Rate (Claims with matching active contract ÷ Total claims) × 100 ≥ 95% contracts, billing_claims Monthly / Qtr
KPI-PCM-002 Fee Schedule Currency (Active fee schedules updated in last 12 months ÷ Total active fee schedules) × 100 100% contract_fee_schedules Monthly
KPI-PCM-003 Avg Reimbursement vs. Contracted Rate AVG(actual_payment ÷ contracted_rate) × 100 per payer ≥ 98% reimbursement_rates, billing_claims Monthly / Qtr
KPI-PCM-004 Underpayment Recovery Rate (Recovered underpayments ÷ Identified underpayments) × 100 ≥ 85% reimbursement_rates, billing_claims Monthly / Qtr
KPI-PCM-005 Contract Expiry Compliance (Contracts renewed before expiry ÷ Total expiring contracts) × 100 100% contracts Monthly
KPI-PCM-006 Prior Auth Denial Rate by Payer (Denied prior auth requests ÷ Total prior auth requests) × 100 per payer ≤ 15% prior_auth_requests Monthly
KPI-PCM-007 Average Days to Payer Payment AVG(payment_date − claim_submission_date) per payer contracts.payment_terms_days billing_claims, contracts Monthly
KPI-PCM-008 Payer Mix Distribution (Encounters per payer_class ÷ Total encounters) × 100 Monitored encounters, payers Monthly / Qtr

Note: billing_claims, prior_auth_requests, and encounters are owned by Billing & Claims / Scheduling modules and referenced here.


KPI Definitions

KPI-PCM-001: Contract Coverage Rate

Description

Percentage of submitted claims that are linked to an active, valid contract at the time of service. Measures how well payer contracts are configured and applied, directly impacting denial risk and underpayments.

Calculation Formula (SQL)

Assumptions:

  • billing_claims (Billing module) with:
  • claim_id, payer_id, facility_id, service_date, total_claims_flag (or simply all rows)
  • contracts (this module) with:
  • contract_id, payer_id, facility_id, effective_date, expiry_date, status
SQL
-- Period parameters: :start_date, :end_date

SELECT
    bc.payer_id,
    COUNT(*) AS total_claims,
    COUNT(
        CASE
            WHEN c.contract_id IS NOT NULL
                 AND c.status = 'active'
                 AND bc.service_date BETWEEN c.effective_date AND COALESCE(c.expiry_date, '2999-12-31')
            THEN 1
        END
    ) AS claims_with_active_contract,
    COUNT(
        CASE
            WHEN c.contract_id IS NOT NULL
                 AND c.status = 'active'
                 AND bc.service_date BETWEEN c.effective_date AND COALESCE(c.expiry_date, '2999-12-31')
            THEN 1
        END
    ) * 100.0 / NULLIF(COUNT(*), 0) AS contract_coverage_rate_pct
FROM billing_claims bc
LEFT JOIN contracts c
  ON c.payer_id = bc.payer_id
 AND c.facility_id = bc.facility_id
 AND bc.service_date BETWEEN c.effective_date AND COALESCE(c.expiry_date, '2999-12-31')
WHERE bc.service_date BETWEEN :start_date AND :end_date
GROUP BY bc.payer_id;

Target / Benchmark

Metric Target Source / Rationale
Contract Coverage Rate ≥ 95% Internal RCM best practice to minimise out-of-contract billing and payer disputes.

Data Sources

  • contracts
  • contract_id, payer_id, facility_id, effective_date, expiry_date, status
  • billing_claims (Billing module)
  • claim_id, payer_id, facility_id, service_date, claim_status

Dimensions / Filters

  • Time: month, quarter, year
  • Facility (facility_id)
  • Department (department_id from encounters/claims)
  • Payer (payer_id)
  • Contract type (contracts.contract_type)

Visualization

  • Primary: Bar chart by payer (contract coverage rate %).
  • Secondary: Line chart trend by month (overall rate).

Alert Thresholds

  • Warning: < 97% overall for the month.
  • Critical: < 95% overall OR any single high-volume payer < 90%.
  • Notifications:
  • RCM Manager
  • Contract Manager
  • Billing Manager (cc)

KPI-PCM-002: Fee Schedule Currency

Description

Percentage of active fee schedules that have been updated within the last 12 months. Ensures alignment with latest DHA/DOH tariffs and contract amendments, reducing underbilling and compliance risk.

Calculation Formula (SQL)

Assumptions:

  • contract_fee_schedules with:
  • fee_schedule_id, status, effective_date, expiry_date, last_updated_at
SQL
-- As of reference date :as_of_date

WITH active_schedules AS (
    SELECT *
    FROM contract_fee_schedules
    WHERE status = 'active'
      AND effective_date <= :as_of_date
      AND COALESCE(expiry_date, '2999-12-31') >= :as_of_date
)
SELECT
    COUNT(*) AS total_active_fee_schedules,
    COUNT(
        CASE
            WHEN last_updated_at >= (:as_of_date - INTERVAL '12 months')
            THEN 1
        END
    ) AS active_updated_within_12m,
    COUNT(
        CASE
            WHEN last_updated_at >= (:as_of_date - INTERVAL '12 months')
            THEN 1
        END
    ) * 100.0 / NULLIF(COUNT(*), 0) AS fee_schedule_currency_pct
FROM active_schedules;

Target / Benchmark

Metric Target Source / Rationale
Fee Schedule Currency 100% Internal policy aligned with DHA/DOH annual tariff updates and payer renegotiations.

Data Sources

  • contract_fee_schedules
  • fee_schedule_id, contract_id, status, effective_date, expiry_date, last_updated_at

Dimensions / Filters

  • Payer
  • Facility
  • Contract type
  • Tariff source (DHA, DOH, custom) if stored as base_tariff

Visualization

  • Gauge for overall percentage.
  • Table listing non-current fee schedules (with last updated date) for action.

Alert Thresholds

  • Warning: Any active schedule not updated in last 12 months.
  • Critical: Any DHA/DOH-linked schedule not updated within 3 months of official tariff release.
  • Notifications:
  • Fee Schedule Analyst
  • RCM Manager

KPI-PCM-003: Average Reimbursement vs. Contracted Rate

Description

Average ratio of actual reimbursement to contracted rate per CPT code and payer, expressed as a percentage. Measures whether payers are paying as per contract and whether billing is capturing contracted value.

Calculation Formula (SQL)

Assumptions:

  • reimbursement_rates (this module, aggregated periodically) with:
  • rate_id, payer_id, contract_id, cpt_code, expected_rate, actual_avg_rate, period_start, period_end
  • Alternatively, direct from billing_claim_lines (Billing module) if needed.
SQL
SELECT
    rr.payer_id,
    rr.contract_id,
    AVG(
        CASE
            WHEN rr.expected_rate > 0
            THEN rr.actual_avg_rate / rr.expected_rate * 100.0
        END
    ) AS avg_reimbursement_vs_contracted_pct
FROM reimbursement_rates rr
WHERE rr.period_start >= :start_date
  AND rr.period_end   <= :end_date
GROUP BY rr.payer_id, rr.contract_id;

Target / Benchmark

Metric Target Rationale
Avg Reimbursement vs. Contracted Rate ≥ 98% Allows minor adjudication differences; flags systemic underpay.

Data Sources

  • reimbursement_rates
  • payer_id, contract_id, cpt_code, expected_rate, actual_avg_rate, variance_pct, period_start, period_end
  • Optional drill-down:
  • billing_claim_lines (Billing module) with allowed_amount, paid_amount, cpt_code, contracted_rate.

Dimensions / Filters

  • Time: month, quarter, year
  • Payer
  • Contract
  • CPT code / service category
  • Facility

Visualization

  • Bar chart by payer (average %).
  • Heatmap: payer vs. service category (colour = % of contracted rate).
  • Table for top negative variances.

Alert Thresholds

  • Warning: Any payer average < 98% for the period.
  • Critical: Any payer average < 95% OR any high-volume CPT with < 90%.
  • Notifications:
  • RCM Manager
  • Finance Director
  • Contract Manager (for flagged payers)

KPI-PCM-004: Underpayment Recovery Rate

Description

Percentage of identified underpayments that have been successfully recovered from payers. Indicates effectiveness of underpayment detection and follow-up processes.

Calculation Formula (SQL)

Assumptions:

  • reimbursement_rates or an underpayments table; here we assume an underpayments view:

underpayments (logical):

  • payer_id, contract_id, claim_id, identified_underpayment_amount, recovered_amount
SQL
SELECT
    u.payer_id,
    SUM(u.identified_underpayment_amount) AS total_identified_underpayments,
    SUM(u.recovered_amount) AS total_recovered_underpayments,
    SUM(u.recovered_amount) * 100.0 / NULLIF(SUM(u.identified_underpayment_amount), 0)
        AS underpayment_recovery_rate_pct
FROM underpayments u
WHERE u.identification_date BETWEEN :start_date AND :end_date
GROUP BY u.payer_id;

If underpayments is not a physical table, it can be derived from reimbursement_rates where variance_pct < 0.

Target / Benchmark

Metric Target Rationale
Underpayment Recovery Rate ≥ 85% Internal RCM performance target for UAE market.

Data Sources

  • Derived from:
  • reimbursement_rates.variance_pct, expected_rate, actual_avg_rate
  • billing_claims / billing_payments (Billing module) for detailed amounts.

Dimensions / Filters

  • Time period
  • Payer
  • Contract
  • Service category
  • Facility

Visualization

  • Bar chart by payer (recovery rate %).
  • Line chart trend of total identified vs. recovered amounts.

Alert Thresholds

  • Warning: Overall recovery rate < 85% for last quarter.
  • Critical: Any payer with > AED 100,000 outstanding underpayments older than 90 days.
  • Notifications:
  • RCM Manager
  • Finance Director
  • Collections / AR team

KPI-PCM-005: Contract Expiry Compliance

Description

Percentage of contracts that are renewed (or terminated with replacement) before their expiry date. Prevents gaps in coverage and out-of-contract billing.

Calculation Formula (SQL)

Assumptions:

  • contracts with:
  • contract_id, payer_id, facility_id, effective_date, expiry_date, status
  • contract_amendments for renewals OR contracts.parent_contract_id for new versions.

We define:

  • expiring_contracts: contracts with expiry_date in period and status in ('active','pending_renewal').
  • renewed_before_expiry: expiring contracts that have:
  • a child contract (parent_contract_id = contract_id) with effective_date <= expiry_date, OR
  • status = 'renewed' and approved_date <= expiry_date.
SQL
WITH expiring AS (
    SELECT c.contract_id, c.payer_id, c.facility_id, c.expiry_date
    FROM contracts c
    WHERE c.expiry_date BETWEEN :start_date AND :end_date
      AND c.status IN ('active', 'pending_renewal')
),
renewed AS (
    SELECT DISTINCT e.contract_id
    FROM expiring e
    LEFT JOIN contracts c_new
      ON c_new.parent_contract_id = e.contract_id
     AND c_new.effective_date <= e.expiry_date
    LEFT JOIN contracts c_self
      ON c_self.contract_id = e.contract_id
     AND c_self.status = 'renewed'
     AND c_self.approved_date <= e.expiry_date
    WHERE c_new.contract_id IS NOT NULL
       OR c_self.contract_id IS NOT NULL
)
SELECT
    COUNT(*) AS total_expiring_contracts,
    COUNT(r.contract_id) AS contracts_renewed_before_expiry,
    COUNT(r.contract_id) * 100.0 / NULLIF(COUNT(*), 0) AS contract_expiry_compliance_pct
FROM expiring e
LEFT JOIN renewed r
  ON r.contract_id = e.contract_id;

Target / Benchmark

Metric Target Rationale
Contract Expiry Compliance 100% Internal governance standard for payer relationships.

Data Sources

  • contracts
  • contract_id, payer_id, facility_id, effective_date, expiry_date, status, approved_date, parent_contract_id
  • contract_amendments (for detailed renewal/amendment tracking)

Dimensions / Filters

  • Time period (based on expiry_date)
  • Payer
  • Facility
  • Contract type

Visualization

  • Gauge for overall compliance.
  • Table of contracts expiring in next 90/60/30 days with status.

Alert Thresholds

  • Warning: Any contract within 60 days of expiry without renewal in progress.
  • Critical: Any contract expired without replacement.
  • Notifications:
  • Contract Manager
  • RCM Manager
  • Finance Director (for high-revenue payers)

KPI-PCM-006: Prior Auth Denial Rate by Payer

Description

Percentage of prior authorization requests that are denied by each payer. High rates may indicate misaligned coverage rules, documentation issues, or contract problems.

Calculation Formula (SQL)

Assumptions:

  • prior_auth_requests (Billing / Utilization Management module) with:
  • auth_id, payer_id, plan_id, service_category, cpt_code, request_date, status (e.g., 'approved','denied','pending','cancelled')
SQL
SELECT
    par.payer_id,
    COUNT(*) AS total_prior_auth_requests,
    COUNT(CASE WHEN par.status = 'denied' THEN 1 END) AS denied_prior_auth_requests,
    COUNT(CASE WHEN par.status = 'denied' THEN 1 END) * 100.0 / NULLIF(COUNT(*), 0)
        AS prior_auth_denial_rate_pct
FROM prior_auth_requests par
WHERE par.request_date BETWEEN :start_date AND :end_date
GROUP BY par.payer_id;

Target / Benchmark

Metric Target Rationale
Prior Auth Denial Rate/Payer ≤ 15% Internal target; above this suggests need for rule/contract review.

Data Sources

  • prior_auth_requests
  • auth_id, payer_id, plan_id, service_category, cpt_code, request_date, status

Dimensions / Filters

  • Time period
  • Payer
  • Plan
  • Service category
  • Facility / department
  • Ordering provider (via linked encounter/order)

Visualization

  • Bar chart: denial rate by payer.
  • Drill-down table: top denied CPT/service categories per payer.

Alert Thresholds

  • Warning: Any payer with denial rate between 15–20%.
  • Critical: Any payer with denial rate > 20% or sudden increase > 5 percentage points month-on-month.
  • Notifications:
  • Utilization Management Lead
  • Contract Analyst
  • RCM Manager

KPI-PCM-007: Average Days to Payer Payment

Description

Average number of days from claim submission to payment receipt per payer, compared against contractual payment terms. Indicates payer performance and cash flow impact.

Calculation Formula (SQL)

Assumptions:

  • billing_claims with:
  • claim_id, payer_id, submission_date, payment_date, claim_status
  • contracts with:
  • payer_id, facility_id, payment_terms_days, status
SQL
SELECT
    bc.payer_id,
    AVG(DATE_PART('day', bc.payment_date::timestamp - bc.submission_date::timestamp)) AS avg_days_to_payment,
    MIN(c.payment_terms_days) AS contractual_payment_terms_days,
    AVG(DATE_PART('day', bc.payment_date::timestamp - bc.submission_date::timestamp))
        - MIN(c.payment_terms_days) AS avg_days_over_terms
FROM billing_claims bc
LEFT JOIN contracts c
  ON c.payer_id = bc.payer_id
 AND c.status = 'active'
 AND bc.service_date BETWEEN c.effective_date AND COALESCE(c.expiry_date, '2999-12-31')
WHERE bc.submission_date BETWEEN :start_date AND :end_date
  AND bc.payment_date IS NOT NULL
GROUP BY bc.payer_id;

Target / Benchmark

Metric Target Rationale
Avg Days to Payer Payment payment_terms_days per contract Contractual compliance and cash flow health.

Data Sources

  • billing_claims
  • claim_id, payer_id, service_date, submission_date, payment_date, claim_status
  • contracts
  • payer_id, facility_id, payment_terms_days, effective_date, expiry_date, status

Dimensions / Filters

  • Time period
  • Payer
  • Facility
  • Claim type (inpatient/outpatient)
  • Department

Visualization

  • Bar chart: average days to payment vs. contractual terms per payer.
  • Line chart: trend of average days to payment over time.

Alert Thresholds

  • Warning: Avg days to payment exceeds terms by > 5 days for any payer.
  • Critical: Avg days to payment exceeds terms by > 10 days or > 30 days absolute.
  • Notifications:
  • RCM Manager
  • Finance Director
  • AR / Collections team

KPI-PCM-008: Payer Mix Distribution

Description

Distribution of encounters by payer class (e.g., government, private, self-pay, international). Used for strategic planning, contract prioritisation, and forecasting.

Calculation Formula (SQL)

Assumptions:

  • encounters (Scheduling module) with:
  • encounter_id, encounter_date, payer_id
  • payers (this module) with:
  • payer_id, payer_class (e.g., 'government', 'private', 'self-pay', 'international')
SQL
SELECT
    p.payer_class,
    COUNT(*) AS encounters_count,
    COUNT(*) * 100.0 / NULLIF(SUM(COUNT(*)) OVER (), 0) AS payer_mix_pct
FROM encounters e
JOIN payers p
  ON p.payer_id = e.payer_id
WHERE e.encounter_date BETWEEN :start_date AND :end_date
GROUP BY p.payer_class;

Target / Benchmark

  • No fixed numeric target; monitored for trends and strategic decisions (e.g., DOH/DHA payer mix, THIQA/SAADA share).

Data Sources

  • encounters
  • encounter_id, encounter_date, payer_id, facility_id, department_id
  • payers
  • payer_id, payer_class, payer_type

Dimensions / Filters

  • Time period
  • Facility
  • Department
  • Payer class
  • Payer

Visualization

  • Pie chart or stacked bar chart by payer class.
  • Trend line: payer class share over time.

Alert Thresholds

  • No hard alerts; optional:
  • Warning: Sudden change > 5 percentage points in any payer class share month-on-month.
  • Notifications:
  • Finance Director
  • Strategy / Business Development
  • RCM Manager

Standard Reports

Report ID Report Name Purpose Audience Frequency Format
RPT-PCM-001 Payer Performance Scorecard Consolidated view of KPIs (coverage, reimbursement variance, days to pay, denials). RCM Manager, Finance Director Monthly / Qtr Interactive dashboard + PDF
RPT-PCM-002 Contract Expiry & Renewal Tracker Track contracts nearing expiry and renewal status; support KPI-PCM-005. Contract Manager, RCM Manager Weekly Dashboard + Excel export
RPT-PCM-003 Fee Schedule Currency Report Identify fee schedules not updated within last 12 months; support KPI-PCM-002. Fee Schedule Analyst, RCM Monthly Dashboard + CSV
RPT-PCM-004 Underpayment & Recovery Analysis Detail underpayments by payer, CPT, and recovery status; support KPI-PCM-004. RCM Manager, AR Team Monthly PDF + Excel
RPT-PCM-005 Prior Auth Denial Analysis Analyse prior auth denial rates by payer, service, and reason; support KPI-PCM-006. Utilization Mgmt, Contract Team Monthly Dashboard + CSV
RPT-PCM-006 Contract Compliance vs. Payment Terms Compare actual days to payment vs. contractual terms; support KPI-PCM-007. Finance Director, RCM Monthly Dashboard + PDF
RPT-PCM-007 Payer Mix & Volume Trend Show encounter and claim volumes by payer class and payer; support KPI-PCM-008. Finance, Strategy, RCM Monthly / Qtr Dashboard + Excel
RPT-PCM-008 Payer Master & Network Status Overview of payer master, network tier, eClaim status, and active contracts. System Admin, RCM, Billing On-demand HTML + CSV
RPT-PCM-009 Contract Version & Amendment History Audit trail of contract versions and amendments for legal/compliance review. Legal, Compliance, RCM On-demand PDF

Dashboard Wireframe

High-level HTML wireframe for Payer Performance Dashboard (SCR-PCM-007) integrating key KPIs.

Show HTML code
HTML
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Payer Performance Dashboard</title>
</head>
<body style="font-family: Arial, sans-serif; margin: 0; padding: 0; background:#f5f5f5;">
  <!-- Top Bar -->
  <header style="background:#004b8d; color:#fff; padding:10px 20px;">
    <h1 style="margin:0; font-size:20px;">Payer Performance Dashboard</h1>
    <div style="margin-top:5px; font-size:12px;">
      <span>Module: Policy &amp; Contract Management</span>
    </div>
  </header>

  <!-- Filters -->
  <section style="background:#ffffff; padding:10px 20px; border-bottom:1px solid #ddd;">
    <form style="display:flex; flex-wrap:wrap; gap:10px; align-items:flex-end;">
      <div>
        <label for="date_from" style="display:block; font-size:12px;">From</label>
        <input type="date" id="date_from" style="padding:4px; font-size:12px;">
      </div>
      <div>
        <label for="date_to" style="display:block; font-size:12px;">To</label>
        <input type="date" id="date_to" style="padding:4px; font-size:12px;">
      </div>
      <div>
        <label for="facility" style="display:block; font-size:12px;">Facility</label>
        <select id="facility" style="padding:4px; font-size:12px; min-width:140px;">
          <option>All Facilities</option>
          <option>Dubai General Hospital</option>
          <option>Abu Dhabi Medical Center</option>
        </select>
      </div>
      <div>
        <label for="payer" style="display:block; font-size:12px;">Payer</label>
        <select id="payer" style="padding:4px; font-size:12px; min-width:140px;">
          <option>All Payers</option>
          <option>Daman</option>
          <option>THIQA</option>
          <option>Oman Insurance</option>
        </select>
      </div>
      <div>
        <label for="payer_class" style="display:block; font-size:12px;">Payer Class</label>
        <select id="payer_class" style="padding:4px; font-size:12px; min-width:120px;">
          <option>All</option>
          <option>Government</option>
          <option>Private</option>
          <option>Self-pay</option>
          <option>International</option>
        </select>
      </div>
      <div>
        <button type="button" style="padding:6px 12px; font-size:12px; background:#004b8d; color:#fff; border:none; cursor:pointer;">Apply</button>
      </div>
    </form>
  </section>

  <!-- KPI Cards -->
  <section style="padding:15px 20px;">
    <div style="display:flex; flex-wrap:wrap; gap:10px;">
      <div style="flex:1 1 180px; background:#ffffff; border-radius:4px; padding:10px; border-top:3px solid #2e7d32;">
        <div style="font-size:11px; color:#666;">Contract Coverage Rate</div>
        <div style="font-size:22px; font-weight:bold;">96.8%</div>
        <div style="font-size:11px; color:#2e7d32;">Target ≥ 95%</div>
      </div>
      <div style="flex:1 1 180px; background:#ffffff; border-radius:4px; padding:10px; border-top:3px solid #2e7d32;">
        <div style="font-size:11px; color:#666;">Fee Schedule Currency</div>
        <div style="font-size:22px; font-weight:bold;">100%</div>
        <div style="font-size:11px; color:#2e7d32;">All active schedules &lt; 12 months</div>
      </div>
      <div style="flex:1 1 180px; background:#ffffff; border-radius:4px; padding:10px; border-top:3px solid #f9a825;">
        <div style="font-size:11px; color:#666;">Avg Reimbursement vs. Contract</div>
        <div style="font-size:22px; font-weight:bold;">97.2%</div>
        <div style="font-size:11px; color:#f9a825;">Target ≥ 98%</div>
      </div>
      <div style="flex:1 1 180px; background:#ffffff; border-radius:4px; padding:10px; border-top:3px solid #c62828;">
        <div style="font-size:11px; color:#666;">Underpayment Recovery Rate</div>
        <div style="font-size:22px; font-weight:bold;">82.5%</div>
        <div style="font-size:11px; color:#c62828;">Target ≥ 85%</div>
      </div>
    </div>
  </section>

  <!-- Charts Row 1 -->
  <section style="padding:0 20px 15px 20px;">
    <div style="display:flex; flex-wrap:wrap; gap:10px;">
      <div style="flex:2 1 320px; background:#ffffff; border-radius:4px; padding:10px;">
        <h2 style="margin:0 0 5px 0; font-size:14px;">Payer Performance vs. Contract</h2>
        <div style="font-size:11px; color:#666; margin-bottom:5px;">Bar chart: Avg reimbursement vs. contracted rate by payer</div>
        <div style="height:200px; border:1px dashed #ccc; text-align:center; font-size:11px; color:#999; line-height:200px;">
          [Bar Chart Placeholder]
        </div>
      </div>
      <div style="flex:1 1 260px; background:#ffffff; border-radius:4px; padding:10px;">
        <h2 style="margin:0 0 5px 0; font-size:14px;">Payer Mix Distribution</h2>
        <div style="font-size:11px; color:#666; margin-bottom:5px;">Pie chart: encounters by payer class</div>
        <div style="height:200px; border:1px dashed #ccc; text-align:center; font-size:11px; color:#999; line-height:200px;">
          [Pie Chart Placeholder]
        </div>
      </div>
    </div>
  </section>

  <!-- Charts Row 2 -->
  <section style="padding:0 20px 15px 20px;">
    <div style="display:flex; flex-wrap:wrap; gap:10px;">
      <div style="flex:1 1 260px; background:#ffffff; border-radius:4px; padding:10px;">
        <h2 style="margin:0 0 5px 0; font-size:14px;">Avg Days to Payment</h2>
        <div style="font-size:11px; color:#666; margin-bottom:5px;">Bar chart: actual vs. contractual terms by payer</div>
        <div style="height:180px; border:1px dashed #ccc; text-align:center; font-size:11px; color:#999; line-height:180px;">
          [Bar Chart Placeholder]
        </div>
      </div>
      <div style="flex:1 1 260px; background:#ffffff; border-radius:4px; padding:10px;">
        <h2 style="margin:0 0 5px 0; font-size:14px;">Prior Auth Denial Rate</h2>
        <div style="font-size:11px; color:#666; margin-bottom:5px;">Bar chart: denial rate by payer</div>
        <div style="height:180px; border:1px dashed #ccc; text-align:center; font-size:11px; color:#999; line-height:180px;">
          [Bar Chart Placeholder]
        </div>
      </div>
      <div style="flex:1 1 260px; background:#ffffff; border-radius:4px; padding:10px;">
        <h2 style="margin:0 0 5px 0; font-size:14px;">Contract Expiry Compliance</h2>
        <div style="font-size:11px; color:#666; margin-bottom:5px;">Gauge + list of expiring contracts</div>
        <div style="height:180px; border:1px dashed #ccc; text-align:center; font-size:11px; color:#999; line-height:180px;">
          [Gauge / List Placeholder]
        </div>
      </div>
    </div>
  </section>

  <!-- Detail Table -->
  <section style="padding:0 20px 20px 20px;">
    <div style="background:#ffffff; border-radius:4px; padding:10px;">
      <div style="display:flex; justify-content:space-between; align-items:center;">
        <h2 style="margin:0; font-size:14px;">Payer Scorecard Detail</h2>
        <button type="button" style="padding:4px 10px; font-size:11px; background:#004b8d; color:#fff; border:none; cursor:pointer;">Export to Excel</button>
      </div>
      <div style="margin-top:8px; max-height:220px; overflow:auto;">
        <table style="width:100%; border-collapse:collapse; font-size:11px;">
          <thead>
            <tr style="background:#f0f0f0;">
              <th style="border:1px solid #ddd; padding:4px;">Payer</th>
              <th style="border:1px solid #ddd; padding:4px;">Payer Class</th>
              <th style="border:1px solid #ddd; padding:4px;">Contract Coverage</th>
              <th style="border:1px solid #ddd; padding:4px;">Reimb vs. Contract</th>
              <th style="border:1px solid #ddd; padding:4px;">Underpayment Recovery</th>
              <th style="border:1px solid #ddd; padding:4px;">Avg Days to Pay</th>
              <th style="border:1px solid #ddd; padding:4px;">Prior Auth Denial</th>
              <th style="border:1px solid #ddd; padding:4px;">Actions</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td style="border:1px solid #ddd; padding:4px;">Daman</td>
              <td style="border:1px solid #ddd; padding:4px;">Private</td>
              <td style="border:1px solid #ddd; padding:4px;">98.5%</td>
              <td style="border:1px solid #ddd; padding:4px;">99.1%</td>
              <td style="border:1px solid #ddd; padding:4px;">88.0%</td>
              <td style="border:1px solid #ddd; padding:4px;">28 (≤ 30)</td>
              <td style="border:1px solid #ddd; padding:4px;">12.3%</td>
              <td style="border:1px solid #ddd; padding:4px;">
                <a href="#" style="font-size:11px;">View Contract</a> |
                <a href="#" style="font-size:11px;">Open Scorecard</a>
              </td>
            </tr>
            <tr>
              <td style="border:1px solid #ddd; padding:4px;">THIQA</td>
              <td style="border:1px solid #ddd; padding:4px;">Government</td>
              <td style="border:1px solid #ddd; padding:4px;">97.2%</td>
              <td style="border:1px solid #ddd; padding:4px;">96.8%</td>
              <td style="border:1px solid #ddd; padding:4px;">80.5%</td>
              <td style="border:1px solid #ddd; padding:4px;">35 (&gt; 30)</td>
              <td style="border:1px solid #ddd; padding:4px;">18.9%</td>
              <td style="border:1px solid #ddd; padding:4px;">
                <a href="#" style="font-size:11px;">Flag for Review</a>
              </td>
            </tr>
            <!-- Additional payer rows -->
          </tbody>
        </table>
      </div>
    </div>
  </section>
</body>
</html>

Regulatory Reports

Although Policy & Contract Management is primarily an internal RCM function, it must support UAE regulatory and HIE-related reporting by ensuring payer, contract, and tariff data are accurate and auditable.

MOH (Federal) – Relevant Reporting Support

  • Controlled Tariff & Contract Reference Support
  • Provide master data extracts (payers, contracts, fee schedules) to support MOH audits of pricing and reimbursement practices.
  • Fields: payer identity, contract type, rate methodology, linkage to MOH-approved tariffs where applicable.
  • Format: CSV/Excel export from payers, contracts, contract_fee_schedules, fee_schedule_items.

  • National Statistics Alignment

  • Ensure payer classification (government/private/self-pay/international) aligns with MOH statistical categories for national health accounts.

DOH (Abu Dhabi) / DHA (Dubai) – Statistical & Claims Submissions

While eClaims/eClaimLink submissions are handled by Billing & Claims, this module must provide:

  1. Tariff Alignment Report (DHA/DOH)
    - Confirms that contracts referencing DHA/DOH tariffs use the latest published versions. - Data: contract_fee_schedules.base_tariff, fee_schedule_items.cpt_code, facility_rate, effective_date. - Used to demonstrate compliance during DOH/DHA inspections.

  2. Payer Network & Plan Registry Consistency - Report comparing internal payer/plan codes with DHA/DOH payer registries and network tiers. - Data: payers.payer_class, payers.dha_license, payers.doh_license, insurance_plans.plan_code, payer_networks.network_tier.

  3. eClaims/eClaimLink Configuration Audit - Export of payer connectivity and submission requirements to support DHA eClaimLink and DOH eClaims configuration reviews. - Data: payers.eclaim_routing, submission timelines, required fields.

UAE PDPL (Federal Decree-Law No. 45/2021) – Data Protection & Audit

Policy & Contract Management must support PDPL compliance by:

  • Access & Change Audit Report
  • Track who viewed or modified payer, contract, and fee schedule records.
  • Data: audit_log (module-wide), including user_id, action, entity_type, entity_id, timestamp, before_value, after_value.
  • Used for PDPL audit trails and internal investigations.

  • Data Minimisation & Retention Reports

  • Identify contracts and payer records beyond retention periods defined by facility policy and UAE law.
  • Support anonymisation or archival of historical financial data where appropriate.

  • Role-Based Access Review

  • Report mapping users/roles (e.g., Contract Manager, Fee Schedule Analyst, Finance Director) to permissions (view/edit contracts, fee schedules).
  • Ensures least-privilege access in line with PDPL and ADHICS/DHA security standards.

NABIDH / Malaffi – HIE Compliance Metrics

Although payer data is not directly exchanged via NABIDH/Malaffi, this module indirectly supports:

  • Coverage Rule Consistency for Shared Care
  • Reporting on coverage and prior auth rules that affect cross-facility services (e.g., imaging, high-cost procedures).
  • Ensures that eligibility and coverage logic used by CPOE and Patient Access is consistent with payer contracts, reducing claim rejections for HIE-enabled care.

  • Facility-Level Contract Availability

  • For multi-facility groups participating in NABIDH/Malaffi, report which facilities are in-network for each payer and service category.
  • Data: payer_networks.facility_id, network_tier, status.

These reports should be exportable in CSV/Excel and accessible to Compliance, RCM, and IT Security teams.


Ad-Hoc Reporting

Available Data Fields for Custom Queries

Key entities available for ad-hoc reporting (via internal reporting database or BI layer):

  • Payers (payers)
  • payer_id, payer_name_en, payer_name_ar, payer_type, payer_class, tpa_name
  • dha_license, doh_license, eclaim_routing, is_active
  • Contact fields: contact_email, contact_phone

  • Insurance Plans (insurance_plans)

  • plan_id, payer_id, plan_name_en, plan_name_ar, plan_code
  • plan_type, network_type, coverage_level
  • annual_maximum, copay_percentage, deductible
  • effective_date, expiry_date, is_active

  • Contracts (contracts)

  • contract_id, payer_id, facility_id, contract_type
  • effective_date, expiry_date, auto_renew
  • rate_methodology, payment_terms_days, status
  • approved_by, approved_date, version, parent_contract_id
  • document_path

  • Contract Fee Schedules (contract_fee_schedules)

  • fee_schedule_id, contract_id, schedule_name
  • base_tariff (DHA/DOH/custom), effective_date, expiry_date, status
  • created_by, created_at, last_updated_at

  • Fee Schedule Items (fee_schedule_items)

  • item_id, fee_schedule_id, cpt_code, description
  • facility_rate, professional_rate, modifier, rate_type, is_active

  • Coverage Rules (coverage_rules)

  • rule_id, payer_id, plan_id, rule_type
  • cpt_codes, icd10_codes, age_min, age_max, gender
  • frequency_limit, frequency_period, requires_prior_auth
  • effective_date, is_active

  • Prior Auth Rules (prior_auth_rules)

  • rule_id, payer_id, plan_id, service_category
  • cpt_code_range, auth_required, auth_method
  • turnaround_days, valid_duration_days
  • documentation_required, is_active

  • Payer Networks (payer_networks)

  • network_id, payer_id, facility_id, network_tier
  • effective_date, expiry_date, in_network_rate_modifier
  • out_of_network_rate_modifier, status

  • Reimbursement Rates (reimbursement_rates)

  • rate_id, payer_id, contract_id, cpt_code
  • expected_rate, actual_avg_rate, variance_pct
  • period_start, period_end, claim_count

  • Contract Amendments (contract_amendments)

  • amendment_id, contract_id, amendment_type
  • description, effective_date, old_value, new_value
  • approved_by, approved_date

These can be joined with shared entities:

  • facilities.facility_id
  • departments.department_id
  • users.user_id
  • billing_claims, billing_claim_lines, prior_auth_requests, encounters (from other modules).

Export Formats

For all standard and ad-hoc reports:

  • CSV: For data analysis and integration with external tools.
  • Excel (XLSX): For finance and management users (pivot tables, charts).
  • PDF: For formal reporting, sign-off, and audit documentation.
  • HTML: For interactive dashboards within the HIS.

Exports must:

  • Respect UAE PDPL:
  • Only include necessary fields.
  • Enforce role-based access (e.g., Finance Director can see financial details; Billing Specialist may have restricted access).
  • Be logged in an audit trail (who exported what, when, and with which filters).

Scheduled Report Delivery

The module should support scheduling of key reports:

  • Scheduling Options
  • Frequency: daily, weekly, monthly, quarterly.
  • Time of day (e.g., 02:00 UAE time).
  • Recipients: internal users (via in-system notifications) and optionally email (subject to PDPL and facility policy).

  • Examples

  • Monthly Payer Performance Scorecard emailed to Finance Director and RCM Manager.
  • Weekly Contract Expiry & Renewal Tracker notification to Contract Manager.
  • Monthly Fee Schedule Currency Report to Fee Schedule Analyst.

  • Security & Compliance

  • Email delivery should avoid sensitive patient-level data; this module is primarily financial/contractual, but still subject to PDPL.
  • Links to secure dashboards preferred over attachments where possible.
  • All schedules and deliveries logged for audit (user, report, filters, recipients).

This specification provides the development team with concrete KPI definitions, SQL patterns, reporting inventory, dashboard layout, and regulatory context required to implement the Policy & Contract Management KPIs & reporting layer in the UAE environment.

content/rcm/policy-contract-mgmt/07-kpis-reports.md Generated 2026-02-20 22:54