Skip to main content

Coverages

warning

Satxuma is still under active development. It is not yet HIPAA compliant and should only be used with dummy data.

A coverage is a specific relationship between a patient, a payor, and a time period. You can think of a coverage like an insurance policy: it defines who pays for care, for how long, and under what conditions.

Coverages are critical for determining how therapy services are billed and reimbursed. They often include authorizations, copays, deductibles, and other financial rules.


Data model

Satxuma stores coverages under a patient:

A single coverage is linked to exactly one payor and zero or more authorizations.

Coverages are also referenced by Billing Periods within an admission. This is how Satxuma know which payors to bill for therapy services.

Discussion

When a patient recieves therapy, its important to understand which payor is responsible for footing the bill. However, knowing the payor alone is not always enough. In such cases, it's important to understand which policy period a charge should be allocated to, as the specific policy period's deductible, copay, coinsurance, etc. must be taken into consideration. Satxuma aims to support this level of detail via coverages.

As mentioned earlier, a coverage is a specific relationship between a patient, a payor, and a time period. For example,

  • Patient Bob Anderson has a coverage from Aetna for the period 1/1/2020 thru 1/1/2021 with a $2000 deductible
  • Patient Bob Anderson also has a coverage from Medicare Part A for the period 8/13/2012 thru ongoing
  • Patient Patty Labelle has a coverage from Medicaid for the period 3/20/2020 thru ongoing

Properties

A coverage in Satxuma has the following properties:

  • authorizations (Authorization[])
    A list of service authorizations tied to this coverage (e.g., approved codes, visit/unit limits).
  • coinsurance (boolean | number | null)
    Indicates whether coinsurance applies. If a number, represents the percentage (e.g., 20 for 20%).
  • copay (boolean | { value: number | null; beforeOrAfterDeductible: CopayDeductibleOrder | ''; countsTowardDeductible: boolean | null } | null)
    Represents the patient’s copay arrangement. May be a fixed amount, or structured with deductible rules.
  • deductible (boolean | number | null)
    Indicates whether a deductible applies. If a number, represents the deductible amount.
  • endUTC (Timestamp | Date)
    The date and time when coverage ends.
  • notes (string)
    Free-text notes about the coverage.
  • outOfPocketMax (boolean | number | null)
    Indicates whether an out-of-pocket maximum applies. If a number, represents the dollar limit.
  • payor ({ id: string; name: string; type: PayorType })
    The payor responsible for this coverage, including ID, name, and type.
  • startUTC (Timestamp | Date)
    The date and time when coverage begins.
  • timeZone (TimeZone)
    The time zone for interpreting start and end dates.

Authorization Properties

Each authorization within a coverage has the following properties:

  • approvedHCPCS1Codes (HCPCS1Code[])
    A list of approved HCPCS Level 1 codes (CPT codes).
  • approvedHCPCS2Codes (HCPCS2Code[])
    A list of approved HCPCS Level 2 codes.
  • approvedNTreatments (number | null)
    The maximum number of treatments authorized, if any.
  • approvedNUnits (number | null)
    The maximum number of billing units authorized, if any.
  • disciplineIds (DisciplineId[])
    The disciplines (e.g., PT, OT, SLP) that the authorization applies to.
  • endUTC (Timestamp | Date | 'parentEnd')
    The end date/time of the authorization, or 'parentEnd' to inherit from the coverage.
  • id (UUID)
    Unique identifier for the authorization.
  • notes (string)
    Free-text notes about the authorization.
  • startUTC (Timestamp | Date | 'parentStart')
    The start date/time of the authorization, or 'parentStart' to inherit from the coverage.

Examples

Example 1: Simple coverage with copay and deductible

{
"id": "cvg-123",
"payor": { "id": "pyr-456", "name": "Blue Cross", "type": "Managed Care" },
"startUTC": "2025-01-01T00:00:00Z",
"endUTC": "2025-12-31T23:59:59Z",
"timeZone": "America/Chicago",
"copay": {
"value": 20,
"beforeOrAfterDeductible": "after",
"countsTowardDeductible": true
},
"coinsurance": 0.2,
"deductible": 500,
"outOfPocketMax": 3000,
"authorizations": [],
"notes": "Standard plan coverage for 2025."
}

Example 2: Coverage with an authorization

{
"id": "cvg-789",
"payor": { "id": "pyr-222", "name": "Medicare Part B", "type": "Medicare Part B" },
"startUTC": "2025-03-01T00:00:00Z",
"endUTC": "2025-06-01T00:00:00Z",
"timeZone": "America/New_York",
"copay": false,
"coinsurance": 0.2,
"deductible": null,
"outOfPocketMax": null,
"authorizations": [
{
"id": "auth-1",
"disciplineIds": ["PT"],
"approvedHCPCS1Codes": ["97110", "97140"],
"approvedHCPCS2Codes": [],
"approvedNTreatments": 12,
"approvedNUnits": null,
"startUTC": "parentStart",
"endUTC": "parentEnd",
"notes": "12 PT visits authorized"
}
],
"notes": "Short-term post-op coverage"
}