Appearance
Insurance Claims
User Story
As a billing administrator, I want to process insurance claims so that covered services are reimbursed by the insurer.
Entry Point
Patient Insurance Policy → Coverage determination → Claim
Steps
Verify active contract
- API:
insurance_payor.has_active_contract(insurance_payor, company, on_date) - Returns: Whether the insurer has a valid contract with the facility
- API:
Create patient insurance policy
- Screen: Patient Insurance Policy form
- Data changed: Policy linked to patient with payor and plan details
Determine coverage
- API:
patient_insurance_coverage.create_insurance_eligibility(doc) - Data changed: Patient Insurance Coverage record specifying covered items and percentages
- API:
Deliver healthcare services
- Normal clinical workflows (encounters, labs, procedures, etc.)
Create insurance claim
- Screen: Insurance Claim form
- API:
insurance_claim.get_coverages()(instance) — returns applicable coverages - Data changed: Insurance Claim with coverage details
Submit claim to payor
- User action: Submit claim
- Data changed: Claim status → Submitted
Receive payment
- User action: Create Payment Entry referencing the claim
- Doc event:
insurance_claim.validate_payment_entry_and_set_claim_fields(on PE validate) - Doc event:
payment_entry.set_paid_amount_in_healthcare_docs(on PE submit) - Data changed: Claim payment recorded, healthcare docs updated
Error States
- No active contract →
has_active_contractreturns false - Coverage not determined → claim creation blocked
- Payment amount mismatch → validation error on Payment Entry
Permissions
- Healthcare Administrator: Full insurance workflow access
Related Code
- Payor:
healthcare/healthcare/doctype/insurance_payor/insurance_payor.py - Coverage:
healthcare/healthcare/doctype/patient_insurance_coverage/patient_insurance_coverage.py - Claim:
healthcare/healthcare/doctype/insurance_claim/insurance_claim.py - PE hooks:
healthcare/healthcare/custom_doctype/payment_entry.py