Billing & Claims Management Workflows
This document defines seven core workflows for the Billing & Claims Management (billing-claims) module. Each workflow includes process steps, actors, decision points, integration hooks, exception handling, and the paperless transformation achieved by the HIS.
Regulatory context: All workflows must comply with UAE Federal Decree-Law No. 45/2021 on Personal Data Protection (UAE PDPL), MOH/DOH/DHA revenue cycle regulations, and emirate-level health information exchange policies (NABIDH in Dubai, Malaffi in Abu Dhabi). Claims workflows must follow DHA eClaimLink and DOH eClaims/Shafafiya technical and business rules, including coding standards (ICD-10-AM, CPT, SNOMED CT, LOINC, RxNorm) and payer-specific contract terms.
WF-BILLINGCLAIMS-001: Automated Charge Capture
(Reference to brief: WF-BIL-001)
Process Flow
Actor: System (automated), Charge Entry Clerk
Trigger: Clinical service performed (order completed, procedure done, medication dispensed, bed charge accrued)
Pre-conditions:
- Patient and encounter exist in shared entities (
patients,encounters) - Provider, facility, and department are valid and active
- Relevant clinical order/result exists in source module (CPOE, LIS, RIS, PIS, scheduling)
- Contract and fee schedule available for patient’s active insurance (via
policy-contract-mgmt) - Charge description master and
charge_capture_rulesconfigured and active
-
Receive service event - System receives real-time event from:
- CPOE / LIS / RIS / PIS (order completed/resulted) or
- Scheduling (bed day, OR time, visit completion).
- Event includes patient, encounter, provider, service date/time, and clinical code (e.g., SNOMED CT, LOINC, internal procedure code).
-
Validate encounter and coverage - System verifies:
- Encounter is open or within allowable post-discharge window.
- Patient has active insurance coverage for service date (via
policy-contract-mgmt). - If missing/invalid, flag event for manual review (no charge created yet).
-
Map service to chargeable item - System uses Charge Description Master and
charge_capture_rulesto map:- Clinical code → CPT/HCPCS, revenue code, internal service code.
- If no mapping found, create exception for Charge Entry Clerk.
-
Determine payer and contract - System identifies primary payer, plan, and contract from
policy-contract-mgmt(e.g., Daman, THIQA, Oman Insurance). - For self-pay, assign facility self-pay fee schedule. -
Apply charge capture rules - System evaluates
charge_capture_rules:- Modifier logic (e.g., bilateral procedures, multiple procedures).
- Bundling/unbundling (e.g., inclusive services).
- Facility vs professional component (TC/26 modifiers).
- Rules may suppress duplicate charges or split charges into multiple lines.
-
Calculate charge amount - System queries
fee_schedule_items(viapolicy-contract-mgmt) for:- Contracted rate for CPT/HCPCS + modifier(s).
- Calculates:
charge_amount(gross charge).contracted_rate(expected allowed amount).
-
Attach diagnosis and medical necessity - System pulls ICD-10-AM diagnoses from encounter (via EHR) and:
- Associates them with the charge.
- Validates medical necessity against payer rules (e.g., DHA/DOH policies).
-
Create charge record - System INSERTs into
charges:- Patient, encounter, provider, facility, department, service date, CPT/HCPCS, ICD-10 codes, modifiers, quantity, charge_amount, contracted_rate, source_module, source_order_id, charge_status =
PENDING_EDIT. - System INSERTs into
charge_detailsfor revenue code, cost center, DRG (if applicable).
- Patient, encounter, provider, facility, department, service date, CPT/HCPCS, ICD-10 codes, modifiers, quantity, charge_amount, contracted_rate, source_module, source_order_id, charge_status =
-
Run pre-claim edit checks - System evaluates
claim_editsrelevant to charge-level (e.g., age/gender appropriateness, mutually exclusive procedures, frequency limits). - If errors/warnings:- Store edit results and set
charge_status=ERRORorWARNING. - If clean:
- Set
charge_status=READY.
- Store edit results and set
-
Flag exceptions for manual review
- Charges with
ERRORstatus appear in Charge Review Worklist (SCR-BIL-001) for Charge Entry Clerk to correct (e.g., missing modifier, invalid diagnosis).
- Charges with
-
Accumulate charges on encounter
- Charges remain linked to encounter until:
- Encounter is discharged/closed, or
- Periodic claim generation job runs (see WF-BILLINGCLAIMS-002).
Data Modified:
charges— INSERT, UPDATE (charge_status,contracted_rate, error flags)charge_details— INSERTcharge_capture_rules— READclaim_edits— READ- Shared references (READ only):
patients,encounters,providers,facilities,departments,fee_schedule_items,contracts,insurance_plans,payers
Mermaid Flowchart
Decision Points
- Encounter & coverage valid? - If no active encounter or coverage on service date → no charge created; event queued for manual review.
- Service mapping found? - If no CDM mapping → exception; Charge Entry Clerk must configure mapping or manually enter charge.
- Edit errors/warnings present? - If errors → charge blocked from claim generation until corrected. - If warnings → may proceed but highlighted in worklist for review.
Integration Points
- CPOE / LIS / RIS / PIS / Scheduling
- Direction: Inbound
- Data: Completed orders, procedures, bed days, OR time
- Protocol: Internal API / HL7
DFT^P03,ADT(INT-BIL-001, INT-BIL-002) - Policy & Contract Management (
policy-contract-mgmt) - Direction: Inbound
- Data: Fee schedules, contracts, payer rules
- Protocol: Internal API / shared DB (INT-BIL-003)
- EHR & Patient Management (
ehr-patient-mgmt) - Direction: Inbound
- Data: Patient demographics, diagnoses, provider/facility references
- Protocol: Internal API / HL7
ADT(INT-BIL-009)
Exception Handling
- Missing encounter or coverage:
- Event logged; Charge status not created.
- Worklist entry for Charge Entry Clerk to correct registration/coverage.
- No CDM mapping:
- System raises configuration alert to Revenue Cycle Manager.
- Temporary manual charge entry allowed with audit trail.
- Rule engine failure (technical):
- System creates basic charge with minimal fields and flags
charge_status = SYSTEM_ERROR. - Technical alert to IT; charges excluded from claim generation until reprocessed.
- High-risk PDPL data access:
- Access to financial data logged with user ID and timestamp; only authorized roles can view/edit.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Paper charge tickets/superbills completed by clinicians | Automated charge creation from clinical events with charge_capture_rules |
Reduces missed charges and manual data entry errors |
| Handwritten procedure logs in OR and wards | Structured OR/bed-day events feeding charges via internal API/HL7 DFT |
Near real-time charge capture; supports DOH/DHA audit |
| Manual rate lookup from printed fee schedules | Automated contracted rate retrieval from fee_schedule_items |
Ensures correct pricing per payer contract |
| Paper lists of bundling rules | Centralized charge_capture_rules engine |
Consistent application of complex rules |
Remaining Paper Touchpoints: None — fully digital (subject to rare use of paper notes in downtime procedures, which are later back-entered).
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
| CPOE / LIS / RIS / PIS / Scheduling | Completed service events (orders, procedures, bed days, OR time) | HL7 DFT^P03 / Internal API event |
| EHR & Patient Management | Patient demographics (MRN, Emirates ID, DOB, gender) | patients, patient_identifiers tables |
| EHR & Patient Management | Active encounter details | encounters, encounter_details tables |
| EHR & Patient Management | ICD-10-AM diagnoses for encounter | encounter_diagnoses table |
| Policy & Contract Management | Fee schedules, contracted rates per payer/plan | fee_schedule_items, contracts tables |
| Policy & Contract Management | Charge capture rules (bundling, modifiers) | charge_capture_rules table |
| Policy & Contract Management | Payer-specific claim edit rules | claim_edits table |
| Charge Description Master | Service-to-CPT/HCPCS mappings | cdm_items table |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
charges |
Charge record (patient, encounter, CPT, ICD-10, amount, status) | SQL INSERT |
charge_details |
Revenue code, cost center, CDM reference | SQL INSERT |
| Charge Review Worklist (SCR-BIL-001) | Exception items for manual review | Worklist entry |
order_audit_log |
Audit trail for charge creation | SQL INSERT |
Post-conditions:
- Charge record exists with
charge_status=READY,WARNING, orERROR - Contracted rate populated from fee schedule
- ICD-10-AM diagnoses linked to charge for medical necessity
- Pre-claim edit results stored; errors routed to worklist
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Service event to charge creation | < 5 seconds | If > 30s, alert interface team | charges.created_at minus source event timestamp |
| CDM mapping lookup | < 1 second | If > 5s, degrade to async queue | charge_details.mapping_duration_ms |
| Charge capture rule evaluation | < 2 seconds | If > 10s, create basic charge and flag for reprocessing | charges.rule_eval_duration_ms |
| Fee schedule rate retrieval | < 1 second | If > 5s, mark charge as pending_pricing |
charges.rate_lookup_duration_ms |
| Pre-claim edit check completion | < 3 seconds | If > 15s, defer edits to batch; alert IT | charges.edit_check_completed_at |
| Exception worklist response (manual) | < 4 hours (business hours) | If > 8 hours, escalate to Revenue Cycle Manager | charges.updated_at minus charges.created_at for ERROR items |
State Transition Diagram
WF-BILLINGCLAIMS-002: Claim Generation & Scrubbing
(Reference to brief: WF-BIL-002)
Process Flow
Actor: Billing Specialist, System (automated)
Trigger: Encounter closed/discharged, or scheduled batch claim generation job
Pre-conditions:
- Encounter status = discharged/closed in
encounters - All relevant charges for encounter have been captured (
chargeswithcharge_status≠DRAFT) - Patient insurance coverage and payer contract are valid for service dates
- Claim edit rules (
claim_edits) and payer rules are configured and active
-
Identify encounters ready for billing - System scans
encountersfor:- Discharged/closed status.
- No existing active claim for primary payer.
- Excludes encounters with unresolved charge errors.
-
Aggregate charges into claim - For each encounter and payer:
- Group all eligible
chargeswithcharge_status = READY. - System creates claim header candidate (one per encounter per payer).
- Group all eligible
-
Create claim header - INSERT into
claims:- Patient, encounter, payer, plan, contract, claim_type (inpatient/outpatient), total_charge_amount (sum of charges), claim_status =
DRAFT, created_at.
- Patient, encounter, payer, plan, contract, claim_type (inpatient/outpatient), total_charge_amount (sum of charges), claim_status =
-
Create claim lines - For each charge:
- INSERT into
claim_lineswith: - CPT, modifiers, ICD-10 pointer, quantity, charge_amount.
- Link to
charges.charge_id.
- INSERT into
-
Apply standard claim edits - System evaluates
claim_edits:- CCI bundling/unbundling.
- Modifier validation.
- Diagnosis–procedure matching (ICD-10-AM vs CPT).
- Age/gender appropriateness.
- Updates claim/line statuses and logs edit results.
-
Validate completeness - System checks:
- Attending provider present and valid.
- Facility and department codes valid per DHA/DOH requirements.
- Patient identifiers (MRN, Emirates ID 784-YYYY-NNNNNNN-C) and demographics complete.
- If missing, mark claim
claim_status = ERROR.
-
Run payer-specific validations - For DHA (Dubai) payers:
- Validate eClaimLink XML requirements (e.g., provider DHA license, NABIDH facility ID).
- For DOH (Abu Dhabi) payers:
- Validate Shafafiya/DOH eClaims rules (e.g., DOH provider ID, Malaffi facility ID).
- Apply payer-specific rules from
policy-contract-mgmt(e.g., THIQA, Daman).
-
Calculate expected reimbursement - For each claim line:
- Retrieve contracted allowed amount from
fee_schedule_items/ contract. - Update
claim_lines.allowed_amountandclaims.total_expected_amount(if stored).
- Retrieve contracted allowed amount from
-
Route errors to worklist - Claims with any hard errors:
- Set
claim_status = EDIT_ERROR. - Add to Claim Generation & Scrubbing screen (SCR-BIL-002) for Billing Specialist.
- Set
-
Mark clean claims as ready
- Claims with no hard errors:
- Set
claim_status = READY_FOR_SUBMISSION. - Generate internal claim batch ID if part of batch run.
-
Generate claim payloads
- For each ready claim:
- Build DHA eClaimLink XML or DOH eClaims payload as per payer.
- Store reference in
claim_submissions(pre-submission record with statusPENDING).
Data Modified:
claims— INSERT, UPDATE (claim_status, totals, expected amounts)claim_lines— INSERT, UPDATE (allowed_amount,line_status)charges— UPDATE (link toclaim_idif modeled, status toBILLEDwhen submitted)claim_edits— READclaim_submissions— INSERT (pre-populated for submission)- Shared references (READ):
patients,encounters,providers,facilities,departments,payers,insurance_plans,contracts,fee_schedule_items
Mermaid Flowchart
Decision Points
- Encounter ready for billing? - If charges missing or unresolved errors → encounter excluded from claim generation.
- Hard edit errors present? - If yes → claim blocked from submission; Billing Specialist must correct data.
- Payer-specific rule failures? - If DHA/DOH format or business rule fails → claim flagged with specific error codes for correction.
Integration Points
- Policy & Contract Management
- Direction: Inbound
- Data: Contracted rates, payer-specific rules, financial class
- Protocol: Internal API / shared DB (INT-BIL-003)
- EHR & Patient Management
- Direction: Inbound
- Data: Patient demographics, Emirates ID, diagnoses, provider credentials
- Protocol: Internal API / HL7 ADT (INT-BIL-009)
- DHA eClaimLink / DOH eClaims
- Direction: Outbound (payload preparation)
- Data: Claim XML/structured payload (not yet transmitted; actual send in WF-003)
- Protocol: DHA eClaimLink REST, DOH eClaims/Shafafiya API (INT-BIL-004, INT-BIL-005)
Exception Handling
- Missing mandatory data (e.g., Emirates ID, provider license):
- Claim set to
EDIT_ERROR; error details shown on SCR-BIL-002. - Invalid coding (ICD-10-AM/CPT mismatch):
- Claim line flagged; Billing Specialist can correct diagnosis or procedure codes.
- System failure during batch generation:
- Partial progress logged; successfully created claims remain; failed encounters re-queued for next run.
- PDPL compliance:
- Only authorized Billing Specialist/Revenue Cycle Manager roles can view full financial details; access logged.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Manual assembly of paper claim forms (DHA/DOH) | Automated claims and claim_lines creation with payer-specific formatting |
Reduces preparation time and errors |
| Paper-based edit checklists | Centralized claim_edits engine with real-time validation |
Ensures consistent compliance with DHA/DOH rules |
| Manual calculation of expected reimbursement | Automated contracted rate and allowed amount calculation | Supports variance analysis and AR forecasting |
| Physical folders for “claims with issues” | Digital Claim Edit Worklist (SCR-BIL-002) | Improves visibility and turnaround time |
Remaining Paper Touchpoints: None — fully digital, except rare payer requests for supporting documents that may still be scanned and attached.
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
charges |
All eligible charges with charge_status = READY for encounter |
charges table query |
encounters |
Encounter status (discharged/closed), admission/discharge dates | encounters, encounter_details tables |
| EHR & Patient Management | Patient demographics, Emirates ID, provider credentials | patients, providers tables |
| Policy & Contract Management | Contracted rates, payer rules, financial class | fee_schedule_items, contracts, claim_edits tables |
| DHA / DOH | Payer-specific validation rules (eClaimLink schema, Shafafiya rules) | Master data / API |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
claims |
Claim header (patient, encounter, payer, total charge, status) | SQL INSERT |
claim_lines |
Individual service lines (CPT, ICD-10 pointer, amounts) | SQL INSERT |
claim_submissions |
Pre-submission record with payload reference | SQL INSERT |
| Claim Edit Worklist (SCR-BIL-002) | Claims with hard errors for correction | Worklist entry |
| DHA eClaimLink / DOH eClaims | Claim XML payload (prepared, not yet transmitted) | XML per payer schema |
Post-conditions:
- Claim exists with
claim_status=READY_FOR_SUBMISSIONorEDIT_ERROR - All claim lines linked to source charges
- Expected reimbursement calculated from contracted rates
- Payer-specific payload generated and stored for submission
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Encounter close to claim generation start | < 2 hours (batch) or < 15 minutes (real-time) | If > 4 hours post-discharge, alert Billing Specialist | claims.created_at minus encounters.discharge_datetime |
| Charge aggregation per encounter | < 10 seconds | If > 60s, log performance alert | claims.aggregation_duration_ms |
| Standard claim edit execution | < 5 seconds per claim | If > 30s, defer to batch; alert IT | claims.edit_duration_ms |
| Payer-specific validation | < 3 seconds per claim | If > 15s, queue for async validation | claims.payer_validation_duration_ms |
| Edit error correction (manual) | < 24 hours | If > 48 hours, escalate to Revenue Cycle Manager | claims.updated_at minus claims.created_at for EDIT_ERROR claims |
| Claim generation to ready-for-submission | < 24 hours post-discharge | If > 48 hours, flag as submission lag risk | KPI: Days in AR (DBILLED) |
State Transition Diagram
WF-BILLINGCLAIMS-003: Electronic Claim Submission
(Reference to brief: WF-BIL-003)
Process Flow
Actor: Billing Specialist, System (automated batch)
Trigger: Claims marked as READY_FOR_SUBMISSION (from WF-BILLINGCLAIMS-002)
Pre-conditions:
- Claims exist in
claimswithclaim_status = READY_FOR_SUBMISSION - Corresponding
claim_submissionspre-records exist or will be created - DHA eClaimLink and DOH eClaims connectivity configured and active
- Submission channels defined in master data (Claim Submission Channels)
-
Select claims for submission - System or Billing Specialist filters
claimsby:- Payer, submission channel, date range, facility.
- Selects all with
claim_status = READY_FOR_SUBMISSION.
-
Batch claims by payer and channel - System groups claims into batches:
- DHA eClaimLink (Dubai payers).
- DOH eClaims/Shafafiya (Abu Dhabi payers).
- Other private payer APIs or manual channels.
-
Create submission batch records - For each batch:
- Generate
batch_id. - INSERT multiple rows into
claim_submissionswith: submission_channel,submission_datetime(planned),batch_id,gateway_status = PENDING.
- Generate
-
Transmit to DHA eClaimLink - For DHA batch:
- System builds XML payload per eClaimLink schema.
- Sends via REST API (INT-BIL-004).
- Receives immediate acknowledgement (ACK/NACK).
-
Transmit to DOH eClaims/Shafafiya - For DOH batch:
- System builds DOH eClaims payload.
- Sends via Shafafiya API (INT-BIL-005).
- Receives initial response.
-
Transmit to private payer portals (if integrated) - For payers with direct API:
- Send claims via agreed protocol.
- For non-integrated payers:
- Mark claims as
MANUAL_SUBMISSION_REQUIREDand provide export (e.g., PDF/CSV) for portal upload.
-
Record gateway responses - For each claim in batch:
- Update
claim_submissions.gateway_status(e.g., ACCEPTED, REJECTED). - Store
gateway_response,response_datetime. - Update
claims.claim_status: SUBMITTEDif accepted.GATEWAY_REJECTEDif rejected.
- Update
-
Handle gateway rejections - Claims with
GATEWAY_REJECTED:- Appear in Claim Submission Tracker (SCR-BIL-003).
- Billing Specialist reviews rejection reasons and corrects underlying claim.
- On correction, new submission record created for resubmission.
-
Track claim lifecycle - System periodically polls DHA/DOH/payer APIs for status updates:
- In review, adjudicated, paid, denied.
- Updates
claim_submissionsandclaims.claim_statusaccordingly.
-
Support manual submission
- For payers requiring paper or portal-only:
- System generates claim print/export.
- Billing Specialist records manual submission date and reference in
claim_submissions.
Data Modified:
claim_submissions— INSERT, UPDATE (gateway_status,gateway_response,response_datetime,rejection_reason)claims— UPDATE (claim_status)- Shared references (READ):
payers,contracts,facilities
Mermaid Flowchart
Decision Points
- Submission channel available? - If no electronic channel configured → mark as manual submission; still tracked in system.
- Gateway ACK/NACK result? - If NACK (rejected) → claim not considered submitted; must be corrected and resubmitted.
- Status updates from payer? - If adjudicated → triggers WF-BILLINGCLAIMS-004 (Payment Posting). - If denied → flows into WF-BILLINGCLAIMS-006 (Denial Management).
Integration Points
- DHA eClaimLink
- Direction: Outbound/Inbound
- Data: Claim XML submissions, ACK/NACK, status updates
- Protocol: REST API (INT-BIL-004)
- DOH eClaims / Shafafiya
- Direction: Outbound/Inbound
- Data: Claim submissions, responses
- Protocol: DOH eClaims API (INT-BIL-005)
- Private payer portals
- Direction: Outbound/Inbound (where integrated)
- Data: Claim submissions, status
- Protocol: Payer-specific APIs or manual export
Exception Handling
- API connectivity failure (DHA/DOH):
- Batch marked as
FAILED_TRANSMISSION. - Automatic retries with backoff; if repeated failure, alert Billing Specialist.
- Schema validation error:
- If local XML generation fails → claim remains
READY_FOR_SUBMISSIONwith error log; requires technical correction. - Duplicate submission detection:
- System checks payer reference IDs to avoid re-submitting already accepted claims.
- PDPL considerations:
- Only minimum necessary patient data sent; logs maintained for all external transmissions.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Printing and mailing/faxing paper claims | Direct electronic submission to DHA eClaimLink and DOH eClaims via API | Faster reimbursement, reduced postage and handling |
| Manual spreadsheets to track submitted claims | claim_submissions table and SCR-BIL-003 for real-time tracking |
Improves visibility and reduces lost claims |
| Phone calls to check claim status | Automated status polling and dashboard updates | Frees staff time; better KPIs |
| Manual stamping of “submitted” on paper files | System claim_status transitions with full audit trail |
Supports DOH/DHA audits |
Remaining Paper Touchpoints: Some payers may still require paper attachments; these are scanned and linked to the claim record.
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
claims |
Claims with claim_status = READY_FOR_SUBMISSION |
claims table query |
claim_submissions |
Pre-submission records with payload references | claim_submissions table |
| Master Data | Submission channel configuration (DHA, DOH, private payer) | claim_submission_channels |
| DHA eClaimLink | eClaimLink XML schema and endpoint configuration | REST API config |
| DOH eClaims / Shafafiya | DOH submission schema and endpoint configuration | API config |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
| DHA eClaimLink | Claim XML batches for Dubai payers | XML over HTTPS (INT-BIL-004) |
| DOH eClaims / Shafafiya | Claim batches for Abu Dhabi payers | API payload (INT-BIL-005) |
claim_submissions |
Gateway status, response, timestamps | SQL UPDATE |
claims |
Updated claim_status (SUBMITTED, GATEWAY_REJECTED) | SQL UPDATE |
| Claim Submission Tracker (SCR-BIL-003) | Rejected claims for review | Worklist entry |
Post-conditions:
- All accepted claims have
claim_status = SUBMITTEDwith gateway reference - Rejected claims routed to Submission Tracker with rejection reasons
- Periodic status polling initiated for submitted claims
- Submission audit trail recorded with timestamps and batch IDs
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Ready-for-submission to batch creation | < 1 hour (within submission window) | If > 4 hours, alert Billing Specialist | claim_submissions.created_at minus claims.ready_datetime |
| Batch transmission to gateway | < 5 minutes per batch | If > 15 minutes, retry; if > 30 minutes, alert IT | claim_submissions.submitted_at |
| Gateway ACK/NACK response | < 30 seconds (DHA/DOH target) | If > 2 minutes, log timeout; retry batch | claim_submissions.response_datetime |
| Rejected claim correction and resubmission | < 24 hours | If > 48 hours, escalate to Revenue Cycle Manager | claim_submissions.resubmission_datetime |
| Claim status polling interval | Every 4 hours (configurable) | If no status update > 7 days, alert AR Specialist | claim_submissions.last_poll_datetime |
| Overall submission lag (discharge to first submission) | < 3 calendar days | If > 5 days, flag on AR dashboard; > 10 days, escalate | KPI: Submission Lag Days |
WF-BILLINGCLAIMS-004: Payment Posting & Reconciliation
(Reference to brief: WF-BIL-004)
Process Flow
Actor: Payment Poster, AR Specialist
Trigger: Remittance advice / Explanation of Benefits (EOB) received from payer (ERA file or paper EOB)
Pre-conditions:
- Claims previously submitted and present in
claims - ERA import interfaces configured for DHA/DOH and major payers
- Bank deposit accounts configured in finance system
-
Receive remittance advice - System imports ERA files from:
- DHA eClaimLink, DOH eClaims, or payer-specific channels.
- For paper EOBs, Payment Poster manually enters remittance header.
-
Create remittance record - INSERT into
remittance_advice:- Payer, remittance_date, total_paid, total_claims, file_reference, import_datetime, status =
IMPORTED.
- Payer, remittance_date, total_paid, total_claims, file_reference, import_datetime, status =
-
Parse ERA and match claims - System parses remittance details:
- For each remitted claim, match by payer claim reference, internal claim ID, or patient/encounter.
- If no match found, mark as
UNMATCHEDfor manual review.
-
Create payment batch - INSERT into
payments:- Payer, payment_date, payment_amount (sum of remitted payments), payment_method (EFT, cheque), check_number/EFT reference, batch_id, reconciled = false.
-
Allocate payments to claims - For each matched claim:
- Determine allowed_amount, paid_amount, adjustment_amount, patient_responsibility.
- INSERT into
payment_allocations: payment_id,claim_id,claim_line_id,allocated_amount,adjustment_amount,adjustment_code,patient_responsibility_amount.
-
Update claim and claim lines - UPDATE
claim_lines:- Set
paid_amount,adjustment_amount,denial_code(if any),line_status(e.g., PAID, PARTIAL, DENIED). - UPDATE
claims: total_paid_amount,total_adjusted_amount,patient_responsibility,claim_status(e.g., PAID, PARTIALLY_PAID, DENIED).
- Set
-
Calculate patient responsibility and transfer to patient billing - For each claim:
- Compute patient responsibility (co-pay, co-insurance, deductible).
- Create or update
patient_invoicesandpatient_paymentslinkage as needed (or flag for WF-BILLINGCLAIMS-005).
-
Identify underpayments and denials - System compares
paid_amountvsallowed_amount(from contracts). - If underpayment beyond tolerance or denial codes present:- Flag for Denial Specialist/AR Specialist.
- Send summary to Denial Analysis module (INT-BIL-006).
-
Reconcile bank deposits - Payment Poster verifies:
payments.payment_amountvs bank statement deposits.- Once reconciled, set
payments.reconciled = trueand recordbank_deposit_date.
-
Generate posting reports
- System generates daily payment posting report for finance and Revenue Cycle Manager.
Data Modified:
remittance_advice— INSERT, UPDATE (status)payments— INSERT, UPDATE (reconciled,bank_deposit_date)payment_allocations— INSERTclaim_responses— INSERT (for detailed adjudication, if modeled here)claims— UPDATE (total_paid_amount,total_adjusted_amount,patient_responsibility,claim_status)claim_lines— UPDATE (paid_amount,adjustment_amount,denial_code,line_status)ar_aging— UPDATE/REGENERATE (via scheduled job)- Shared references (READ):
payers,contracts,patients,encounters
Mermaid Flowchart
Decision Points
- Claim match found?
- If no match → line flagged as
UNMATCHED; Payment Poster must manually link or create appropriate record. - Underpayment or denial present? - If yes → claim flagged for Denial Management workflow.
- Bank reconciliation successful? - If discrepancy between ERA total and bank deposit → Payment Poster investigates and may hold reconciliation.
Integration Points
- DHA eClaimLink / DOH eClaims / Payer ERA feeds
- Direction: Inbound
- Data: ERA files, remittance details
- Protocol: As per payer (often via secure SFTP/API)
- Policy & Contract Management
- Direction: Inbound
- Data: Contracted allowed amounts for variance checks
- Protocol: Internal API / shared DB (INT-BIL-003)
- Denial Analysis module
- Direction: Outbound
- Data: Denied claims, denial codes, underpayment details
- Protocol: Internal API / shared DB (INT-BIL-006)
Exception Handling
- ERA file format errors:
- File rejected; status set to
IMPORT_ERRORinremittance_advice; IT notified. - Partial posting:
- If posting interrupted, system ensures idempotency; already posted lines not duplicated.
- Unmatched payments:
- Remittance lines without matching claims held in suspense; AR Specialist resolves.
- PDPL compliance:
- Financial data access restricted; audit logs maintained for all posting and adjustment actions.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Manual processing of paper EOBs | Automated ERA import and parsing into remittance_advice and payments |
Reduces manual data entry and errors |
| Paper payment logs and spreadsheets | Structured payments and payment_allocations tables |
Enables robust reporting and audit |
| Manual bank reconciliation using printed statements | In-system reconciliation with bank deposit tracking | Faster month-end close |
| Paper denial logs maintained in binders | Digital flags and integration with Denial Analysis module | Supports denial trending and DOH/DHA audits |
Remaining Paper Touchpoints: Some payers may still send paper EOBs; these are manually keyed and scanned, then attached to remittance records.
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
| DHA eClaimLink / DOH eClaims / Payer ERA feeds | Electronic Remittance Advice (ERA) files | SFTP / API inbound |
| Payers (paper EOB) | Manual remittance data entry | Manual entry on SCR-BIL-004 |
claims |
Previously submitted claims for matching | claims, claim_lines tables |
| Policy & Contract Management | Contracted allowed amounts for variance detection | fee_schedule_items, contracts tables |
| Bank statements | Deposit amounts for reconciliation | Manual or imported data |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
remittance_advice |
Remittance header (payer, date, total, file reference) | SQL INSERT |
payments |
Payment batch (amount, method, EFT reference) | SQL INSERT |
payment_allocations |
Per-claim payment allocations (paid, adjustments, denials) | SQL INSERT |
claims |
Updated totals and status (PAID, PARTIALLY_PAID, DENIED) | SQL UPDATE |
claim_lines |
Updated paid amounts, adjustment codes, denial codes | SQL UPDATE |
| Denial Analysis module (INT-BIL-006) | Denied/underpaid claims with denial codes | Internal API event |
| Patient Billing (WF-005) | Patient responsibility amounts | Internal handoff |
ar_aging |
Updated aging buckets | Regenerated via scheduled job |
Post-conditions:
- All matched ERA lines allocated to claims with correct paid/adjusted amounts
- Unmatched remittance lines flagged for manual resolution
- Underpayments and denials identified and routed to Denial Analysis
- Patient responsibility calculated and queued for patient billing
- Bank reconciliation status recorded
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| ERA file import and parsing | < 15 minutes per file | If > 1 hour, alert IT | remittance_advice.import_completed_at |
| Claim matching (per ERA line) | < 2 seconds | If > 10s, log performance issue | payment_allocations.matching_duration_ms |
| Payment allocation posting | < 30 minutes per remittance batch | If > 2 hours, alert Payment Poster | payments.posting_completed_at |
| Unmatched line resolution (manual) | < 48 hours | If > 72 hours, escalate to AR Supervisor | payment_allocations.resolved_at for UNMATCHED items |
| Bank reconciliation | Same business day as deposit | If > 2 business days, escalate to Finance Manager | payments.reconciled_at |
| Denial feed to Denial Analysis | < 1 hour post-posting | If > 4 hours, alert Denial Specialist lead | claim_responses.denial_sent_at |
| Overall ERA processing (receipt to fully posted) | < 24 hours | If > 48 hours, escalate to Revenue Cycle Manager | KPI: ERA Processing Turnaround |
State Transition Diagram
WF-BILLINGCLAIMS-005: Patient Billing & Statement Generation
(Reference to brief: WF-BIL-005)
Process Flow
Actor: Patient Billing Specialist, System (automated)
Trigger: Patient balance established after insurance adjudication, or self-pay encounter completion
Pre-conditions:
- Claims adjudicated and patient responsibility calculated (from WF-BILLINGCLAIMS-004), or self-pay charges finalized
- Patient contact details and communication preferences available (from
ehr-patient-mgmt) - Financial policies (discounts, charity, payment plans) configured
-
Identify accounts with patient balance - System scans
claimsandpatient_invoices:- Where patient_responsibility > 0 and not fully paid.
- For self-pay encounters, uses total charges as patient responsibility.
-
Calculate consolidated patient balance - For each patient:
- Aggregate outstanding balances across encounters.
- Consider prior credits or overpayments.
-
Apply financial policies - System checks:
- Eligibility for charity care or discounts (e.g., UAE nationals, government programs).
- Existing payment plans.
- Patient Billing Specialist can adjust or approve discounts per policy.
-
Generate patient invoice - INSERT into
patient_invoices:- Patient, invoice_date, total_amount, paid_amount (initially 0), balance, due_date, statement_number, delivery_method (portal/email/SMS/print), status =
PENDING_SEND.
- Patient, invoice_date, total_amount, paid_amount (initially 0), balance, due_date, statement_number, delivery_method (portal/email/SMS/print), status =
-
Create itemized statement - System compiles:
- Encounter charges, insurance payments, adjustments, patient responsibility.
- Generates bilingual (EN/AR) statement PDF/HTML for portal.
-
Deliver statement - Based on patient preference:
- Publish to Patient Portal (via FHIR API INT-BIL-007).
- Send email/SMS with secure link.
- Queue for print/mail if required.
- UPDATE
patient_invoices.sent_datetimeandstatus = SENT.
-
Accept patient payment - When patient pays (online via portal, POS, bank transfer):
- INSERT into
patient_payments: - Patient, invoice_id, encounter_id (if applicable), payment_amount, payment_method, payment_datetime, receipt_number, collected_by, payment_location.
- INSERT into
-
Update invoice and account - UPDATE
patient_invoices.paid_amountandbalance. - If balance = 0 → setstatus = PAID. - If partial payment →status = PARTIALLY_PAID. -
Issue receipt - System generates digital receipt (EN/AR) and:
- Displays in portal.
- Optionally emails/SMS or prints at POS.
-
Monitor aging and escalate
- System tracks overdue invoices by aging buckets.
- Overdue accounts appear on Patient Billing worklist for follow-up, reminders, or external collections per policy.
Data Modified:
patient_invoices— INSERT, UPDATE (paid_amount,balance,status,sent_datetime)patient_payments— INSERTar_aging— UPDATE/REGENERATE- Shared references (READ):
patients,encounters,claims,patient portalintegration
Mermaid Flowchart
Decision Points
- Eligible for discounts/charity? - If yes → apply policy-based adjustments before invoicing.
- Delivery method available? - If patient has portal access and consent → prefer digital delivery; otherwise print/mail.
- Invoice fully paid? - If yes → close invoice; if no → continue aging and follow-up.
Integration Points
- Patient Portal
- Direction: Bidirectional
- Data: Outbound statements and balances; inbound online payments
- Protocol: FHIR R4 REST API (INT-BIL-007)
- Patient Access
- Direction: Bidirectional
- Data: Co-pay amounts at check-in, payment status
- Protocol: Internal API (INT-BIL-008)
- EHR & Patient Management
- Direction: Inbound
- Data: Patient demographics, contact details, consent preferences
- Protocol: Internal API / HL7 ADT (INT-BIL-009)
Exception Handling
- Invalid contact details (email/phone):
- Delivery fails; system flags invoice for manual contact update.
- Payment reversal/chargeback:
- Negative
patient_paymentsentry orrefundsrecord created; invoice balance recalculated. - PDPL consent:
- If patient has not consented to electronic communication, restrict to portal or print; log consent status.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Printed patient bills and manual mailing | Electronic patient_invoices with portal/email/SMS delivery |
Reduces postage and improves speed |
| Handwritten receipts for patient payments | Structured patient_payments with digital receipts |
Better audit trail and patient experience |
| Manual aging reports compiled monthly | Real-time AR aging dashboard and worklists | Supports proactive collections |
| Physical folders for patient financial records | Centralized Patient Account & Billing screen (SCR-BIL-005) | Easier access and PDPL-compliant logging |
Remaining Paper Touchpoints: Some patients may still request printed statements or receipts; these are generated from the system.
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
claims / payment_allocations |
Patient responsibility amounts (co-pay, co-insurance, deductible) | claims, payment_allocations tables |
patient_invoices |
Existing open invoices and prior balances | patient_invoices table |
| EHR & Patient Management | Patient contact details, communication preferences, consent | patients, patient_demographics tables |
| Policy & Contract Management | Financial assistance policies, discount rules, payment plan terms | Master data / policy tables |
| Patient Portal (INT-BIL-007) | Online payment transactions | FHIR PaymentNotice / Internal API |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
patient_invoices |
Invoice record (amount, due date, delivery method, status) | SQL INSERT / UPDATE |
| Patient Portal (INT-BIL-007) | Statement and balance data | FHIR Account, Invoice |
| Email / SMS gateway | Statement notification with secure link | Notification API |
patient_payments |
Payment record (amount, method, receipt number) | SQL INSERT |
ar_aging |
Updated patient AR aging buckets | Regenerated via scheduled job |
| Print queue | Printed statements for patients without digital access | PDF generation |
Post-conditions:
- Patient invoice exists with correct balance and delivery method
- Statement delivered via patient's preferred channel (portal, email, SMS, print)
- Any collected payments recorded and allocated to invoice
- AR aging updated to reflect current patient balances
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Insurance adjudication to statement generation | < 5 business days | If > 7 days, alert Patient Billing Specialist | patient_invoices.created_at minus claims.adjudication_date |
| Statement delivery (digital) | < 1 hour after generation | If delivery fails, retry 3 times; flag for manual contact | patient_invoices.sent_datetime |
| Statement delivery (print/mail) | < 3 business days after generation | If > 5 days, escalate to operations | Print queue tracking |
| Online payment processing | < 30 seconds (real-time) | If > 2 minutes, display retry message to patient | patient_payments.created_at |
| Overdue follow-up (30-day bucket) | Contact within 5 business days of aging | If > 10 days, escalate to collections supervisor | AR aging report + follow-up log |
| Overdue follow-up (60-day bucket) | Second notice within 3 business days | If > 90 days, refer to external collections per policy | AR aging report |
WF-BILLINGCLAIMS-006: Claim Denial Management
(Reference to brief: WF-BIL-006)
Process Flow
Actor: Denial Specialist, AR Specialist
Trigger: Claim denied or partially denied by payer (identified during payment posting)
Pre-conditions:
- Denial codes and adjustment reason codes configured in master data
- Claims and payment allocations updated from WF-BILLINGCLAIMS-004
- Access to clinical documentation (via EHR) for appeal preparation
-
Identify denied/underpaid claims - System scans
claims,claim_lines, andpayment_allocations:- Where denial codes present or paid_amount < allowed_amount beyond tolerance.
- Adds items to Denial Worklist (SCR-BIL-007).
-
Categorize denial - System categorizes by denial reason:
- Eligibility, authorization, coding, medical necessity, timely filing, benefit limits.
- Uses
Denial Reason Codesmaster and payer-specific mappings.
-
Route to appropriate specialist - Based on category:
- Eligibility/authorization → AR Specialist.
- Coding/medical necessity → Denial Specialist (with Coding team input).
- Assigns owner and due date (based on payer days-to-file).
-
Review and root cause analysis - Specialist reviews:
- Claim details, remittance advice, payer notes.
- Clinical documentation from EHR (NABIDH/Malaffi-compliant access).
- Determines root cause (internal error vs payer issue).
-
Decide on appeal - If low financial impact or low success probability:
- May accept denial and write off per policy (with approval).
- If appeal warranted:
- Proceed to prepare appeal.
-
Prepare appeal package - Compile:
- Corrected claim information (if coding error).
- Supporting clinical notes, lab/imaging reports.
- Appeal letter template (EN/AR) referencing payer rules and UAE regulations where relevant.
- Ensure no unnecessary PHI beyond minimum required (PDPL).
-
Submit appeal - Via:
- eClaimLink (DHA) or DOH eClaims, where supported.
- Payer portal upload.
- Email/fax (if required) with tracking logged.
- Record appeal submission in claim notes or dedicated appeal tracking (within
claim_responsesor related table).
-
Track appeal status - System tracks:
- Appeal submitted, in review, overturned, upheld, partial recovery.
- Updates relevant fields and worklist status.
-
Record final outcome - If overturned/partial:
- Additional payment posted via WF-BILLINGCLAIMS-004.
- If upheld:
- Denial finalized; write-off processed per policy.
- Denial data sent to Denial Analysis module for trending.
Data Modified:
claims— UPDATE (claim_status, denial-related flags)claim_lines— UPDATE (denial_code,line_status)claim_responses— INSERT (appeal records, outcomes)payments/payment_allocations— INSERT/UPDATE (for recovered amounts)ar_aging— UPDATE/REGENERATE- Shared references (READ):
payers,contracts,patients,encounters
Mermaid Flowchart
Decision Points
- Appeal warranted? - Based on financial threshold, days-to-file, and likelihood of success.
- Appeal outcome? - Overturned, partially overturned, or upheld; each path has different financial impact.
- Root cause internal vs payer? - Internal errors may trigger process improvements and staff training.
Integration Points
- Denial Analysis module
- Direction: Outbound
- Data: Denial reasons, amounts, appeal outcomes
- Protocol: Internal API / shared DB (INT-BIL-006)
- Policy & Contract Management
- Direction: Inbound
- Data: Contract terms, timely filing limits, authorization requirements
- Protocol: Internal API (INT-BIL-003)
- DHA eClaimLink / DOH eClaims / Payer Portals
- Direction: Bidirectional
- Data: Appeal submissions and responses
- Protocol: As per payer (often via same channels as claims)
Exception Handling
- Missed appeal deadlines (days-to-file exceeded):
- System warns before deadline; if missed, claim marked as non-appealable.
- Incomplete documentation:
- Appeal cannot be submitted; worklist item remains open until documentation attached.
- PDPL compliance:
- Only minimum necessary clinical data attached to appeals; access logged.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Paper denial logs and manual tracking sheets | Denial Worklist (SCR-BIL-007) with structured denial codes | Improves visibility and reporting |
| Typed or handwritten appeal letters | System-generated appeal templates with auto-populated claim data | Speeds up appeal preparation |
| Physical files of supporting clinical documents | Electronic attachments linked to claim/appeal records | Easier retrieval and PDPL-compliant access |
| Manual statistics on denial trends | Automated feed to Denial Analysis module | Supports targeted interventions |
Remaining Paper Touchpoints: Some payers may still require faxed appeals; these are scanned and linked to the claim.
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
claims / claim_lines / payment_allocations |
Denied or underpaid claims with denial codes and adjustment reasons | claims, claim_lines, payment_allocations tables |
remittance_advice |
Payer remittance notes and explanation of benefits | remittance_advice table |
| EHR & Patient Management | Clinical documentation for appeal (notes, labs, imaging reports) | EHR API / document repository |
| Policy & Contract Management | Contract terms, timely filing limits, authorization requirements | contracts, payer_rules tables |
| Denial Reason Codes | Denial categorization (CARC/RARC, payer-specific codes) | Master data |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
claims |
Updated claim_status (APPEAL_IN_PROGRESS, WRITTEN_OFF) | SQL UPDATE |
claim_responses |
Appeal submission records and outcomes | SQL INSERT |
| Denial Analysis module (INT-BIL-006) | Denial data for trending and root cause analysis | Internal API event |
| DHA eClaimLink / DOH eClaims / Payer portals | Appeal submissions | XML / portal upload / email |
payments / payment_allocations |
Additional payment for overturned appeals | SQL INSERT / UPDATE |
ar_aging |
Updated AR reflecting appeal outcomes | Regenerated via scheduled job |
Post-conditions:
- Denial categorized and root cause identified
- Appeal submitted within payer days-to-file limit (if warranted)
- Appeal outcome recorded; additional payment posted or write-off processed
- Denial data fed to Denial Analysis module for trending
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Denial identification to worklist assignment | < 4 hours | If > 8 hours, alert Denial Specialist lead | claims.denial_identified_at minus payment_allocations.created_at |
| Denial categorization and routing | < 1 business day | If > 2 days, escalate to AR Supervisor | claim_responses.categorized_at |
| Root cause analysis completion | < 3 business days | If > 5 days, escalate to Revenue Cycle Manager | claim_responses.rca_completed_at |
| Appeal preparation and submission | < 10 business days (or 50% of payer days-to-file, whichever is shorter) | At 75% of days-to-file, system auto-escalates | claim_responses.appeal_submitted_at |
| Appeal tracking follow-up | Every 7 calendar days after submission | If no payer response > 30 days, escalate to payer liaison | claim_responses.last_followup_at |
| Appeal resolution recording | < 2 business days after payer decision | If > 5 days, alert AR Specialist | claim_responses.resolution_recorded_at |
State Transition Diagram
WF-BILLINGCLAIMS-007: Co-Payment / Point-of-Service Collection
(Reference to brief: WF-BIL-007)
Process Flow
Actor: Registration Clerk, Cashier
Trigger: Patient check-in for outpatient visit or at discharge (inpatient/ED)
Pre-conditions:
- Appointment or encounter exists in
scheduling/encounters - Insurance eligibility and benefits verified via Patient Access (INT-BIL-008)
- Co-pay rules configured in
policy-contract-mgmt
-
Retrieve encounter and coverage - At check-in/checkout, system retrieves:
- Encounter details (service type, department).
- Patient insurance plan and eligibility result.
-
Calculate expected co-payment - System queries
policy-contract-mgmt:- Co-pay/co-insurance rules based on plan, service type (consultation, procedure, imaging).
- Calculates expected patient responsibility at point-of-service.
-
Display co-payment amount - On Cashier / POS Collection screen (SCR-BIL-009):
- Show amount due, prior balances, and explanation (e.g., “20% co-insurance for MRI”).
-
Confirm with patient - Registration Clerk/Cashier informs patient of amount and payment options. - If patient disputes, staff can view benefit details (if available).
-
Collect payment - If patient agrees:
- Accept payment via cash, credit/debit card, Apple Pay, online link, etc.
- INSERT into
patient_payments: - Patient, encounter_id, payment_amount, payment_method, payment_datetime, receipt_number, collected_by, payment_location =
POS.
-
Issue receipt - System generates receipt (EN/AR) and:
- Prints or sends via email/SMS.
-
Update encounter financials - System links payment to encounter and future invoice:
- Reduces outstanding patient responsibility for that encounter.
-
If patient declines payment - Staff records reason (e.g., financial hardship, will pay later). - Encounter flagged for follow-up billing:
- Note added to
patient_invoicespipeline.
- Note added to
-
End-of-day reconciliation - Cashier runs end-of-day report:
- Compares
patient_paymentscollected at POS vs physical cash/card terminal totals. - Discrepancies investigated and resolved.
- Compares
Data Modified:
patient_payments— INSERTpatient_invoices— UPDATE/INSERT (future billing adjustments)ar_aging— UPDATE/REGENERATE (reflecting early collections)- Shared references (READ):
patients,encounters,insurance_plans,contracts
Mermaid Flowchart
Decision Points
- Patient willing to pay at POS? - If yes → immediate collection improves POS collection rate KPI. - If no → account moves to standard billing workflow.
- Coverage and co-pay rules available? - If not available → estimate or mark as “to be determined”; avoid over-collection.
- Reconciliation discrepancies? - If mismatch between system and physical totals → investigation required before closing day.
Integration Points
- Patient Access
- Direction: Bidirectional
- Data: Eligibility verification, co-pay rules, estimated patient responsibility
- Protocol: Internal API (INT-BIL-008)
- Policy & Contract Management
- Direction: Inbound
- Data: Co-pay/co-insurance rules per plan and service
- Protocol: Internal API / shared DB (INT-BIL-003)
- Patient Portal
- Direction: Outbound
- Data: Updated balance and payment receipts
- Protocol: FHIR R4 REST API (INT-BIL-007)
Exception Handling
- Eligibility not available or system down:
- Staff may collect standard visit fee or defer collection; note reason.
- Payment terminal failure:
- Accept cash or bank transfer; record manually and later reconcile.
- PDPL compliance:
- Payment card data handled by PCI-compliant external gateway; HIS stores only tokens/limited metadata.
Paperless Transformation
| Previously Paper-Based | Now Digital In-System | Notes |
|---|---|---|
| Manual cash registers and handwritten receipts | POS screen (SCR-BIL-009) with patient_payments and digital receipts |
Improves accuracy and auditability |
| Paper logs for daily collections | End-of-day reconciliation reports from system | Reduces manual tallying |
| Verbal estimates of co-pay without documentation | Calculated co-pay with documented rules and amounts | Supports transparency and dispute resolution |
Remaining Paper Touchpoints: Some patients may request printed receipts; these are generated from the system.
Inputs and Outputs
Inputs:
| Source | Data Element | Format |
|---|---|---|
| Scheduling / ADT | Encounter details (service type, department, visit type) | encounters, encounter_details tables |
| Patient Access (INT-BIL-008) | Eligibility verification results, pre-authorization approvals | Internal API response |
| Policy & Contract Management (INT-BIL-003) | Co-pay/co-insurance rules per plan and service type | contracts, copay_rules tables |
patient_invoices |
Prior outstanding balances | patient_invoices table |
| Patient | Payment (cash, card, Apple Pay, bank transfer) | POS terminal / payment gateway |
Outputs:
| Destination | Data Element | Format |
|---|---|---|
patient_payments |
POS payment record (amount, method, receipt, collector, location) | SQL INSERT |
patient_invoices |
Reduced patient responsibility for encounter | SQL UPDATE / INSERT |
| Patient Portal (INT-BIL-007) | Updated balance and payment receipt | FHIR API (outbound) |
| POS receipt | Digital or printed receipt (EN/AR) | PDF / thermal print |
ar_aging |
Updated AR reflecting early collection | Regenerated via scheduled job |
| End-of-day reconciliation report | POS totals vs system totals | Report generation |
Post-conditions:
- Patient payment recorded with receipt number and collection details
- Encounter financial balance reduced by collected amount
- Receipt issued in patient's preferred format
- End-of-day reconciliation data available for cashier review
SLA and Timing
| Step | Target Time | Escalation | Measurement Source |
|---|---|---|---|
| Eligibility and co-pay retrieval | < 5 seconds at check-in | If > 15s, display estimate or defer; alert IT | patient_access.eligibility_response_ms |
| Co-pay calculation display | < 3 seconds | If > 10s, display last known co-pay with disclaimer | copay_calculation_duration_ms |
| Payment processing (card/digital) | < 15 seconds | If > 30s, offer alternative payment method | Payment gateway response time |
| Receipt generation and delivery | < 10 seconds | If > 30s, offer to email/SMS receipt later | patient_payments.receipt_generated_at |
| End-of-day reconciliation | Within 30 minutes of cashier shift close | If discrepancy > AED 100, escalate to Finance Supervisor | Reconciliation report timestamp |