Overview

Namespace URI:
https://ns.cascadeprotocol.org/coverage/v1#
Preferred Prefix:
coverage:
Version:
1.3
Status:
Stable
Schema File:
coverage.ttl (Turtle/RDF)
Layer:
2 (Domain Vocabulary)

The Coverage Vocabulary is a Layer 2 domain vocabulary for patient-owned insurance and benefits data. It resolves the overlap between checkup:InsuranceInfo (Layer 3, patient-reported) and clinical:CoverageRecord (Layer 2, EHR-imported) by providing a shared set of standardized insurance properties. Insurance data is cross-cutting: it is administrative and financial rather than clinical, it is not app-specific (any health app benefits from knowing a patient's coverage), and it is contributed by both patient self-report and EHR import. Any health app can use coverage: properties via the mixed namespace pattern.

From v1.2 onward, the vocabulary also models the denial and appeal workflow — enabling patients to document insurer denials, link supporting clinical evidence, and track appeals through all administrative levels.

Download TTL Back to Documentation

Classes

coverage:InsurancePlan

owl:Class — v1.0

An insurance plan the patient is enrolled in. Unifies patient-reported data (from checkup:InsuranceInfo) and EHR-imported data (from clinical:CoverageRecord) into a single standardized representation.

Subclass of: prov:Entity

See also: fhir:Coverage

Pod storage: /coverage/plans/{plan-id}.ttl

coverage:Deductible

owl:Class — v1.0 (properties added v1.1)

Annual deductible status and progress tracking for an insurance plan. Enables patients to monitor their progress toward meeting annual deductible limits.

Subclass of: prov:Entity

See also: fhir:ExplanationOfBenefit

coverage:CopaySchedule

owl:Class — v1.0 (properties added v1.1)

Copay amounts by service category for an insurance plan. Helps patients understand their cost-sharing responsibilities for different types of care.

Subclass of: prov:Entity

coverage:ClaimRecord

owl:Class — v1.1

A medical claim submitted to an insurer for reimbursement.

See also: fhir:Claim

coverage:BenefitStatement

owl:Class — v1.1

An Explanation of Benefits (EOB) document — the insurer's formal response to a claim, including adjudication details, denial reasons, and patient cost responsibility. CMS mandates patient access via the CARIN Alliance FHIR IG.

See also: fhir:ExplanationOfBenefit

coverage:DenialNotice

owl:Class — v1.2

A formal denial of coverage issued by an insurer. Distinct from BenefitStatement — a DenialNotice initiates an appeal process rather than recording a payment outcome. Modeled as a prov:Entity because it is a static document with a fixed issue date.

Subclass of: prov:Entity

See also: fhir:ExplanationOfBenefit

Pod storage: /coverage/denials/{id}.ttl

coverage:AppealRecord

owl:Class — v1.2

A formal appeal filing contesting a denial notice. One record per appeal level. Modeled as a prov:Activity because it represents an active process with a start date, parties involved, and an outcome.

Subclass of: prov:Activity

See also: fhir:Task

Pod storage: /coverage/appeals/{id}.ttl

coverage:DenialReasonCode

owl:Class — v1.3

Enumeration class for structured denial reason codes. Use named individuals (e.g., coverage:NotMedicallyNecessary) as values for coverage:denialReasonCode. Aligns with HL7 ClaimResponse adjudication codes and CARIN IG for Blue Button (STU2).

See also: HL7 adjudication codes, CARIN IG STU2

InsurancePlan Properties

These properties unify data from both patient-reported intake forms and EHR-imported coverage records.

Core (v1.0)

coverage:providerName

owl:DatatypeProperty

Name of insurance company or plan provider (e.g., Aetna, Blue Cross, Medicare). Unifies checkup:insuranceProvider and clinical:providerName.

Domain: coverage:InsurancePlanRange: xsd:string

coverage:memberId

owl:DatatypeProperty

Insurance policy member/subscriber ID number.

Domain: coverage:InsurancePlanRange: xsd:string

coverage:groupNumber

owl:DatatypeProperty

Employer group number for employer-sponsored plans.

Domain: coverage:InsurancePlanRange: xsd:string

coverage:planName

owl:DatatypeProperty

Name of the insurance plan (e.g., "Gold PPO 500").

Domain: coverage:InsurancePlanRange: xsd:string

coverage:planType

owl:DatatypeProperty

Type of insurance plan. Values: hmo, ppo, epo, pos, hdhp, medicare, medicaid, tricare, other.

Domain: coverage:InsurancePlanRange: xsd:string

coverage:coverageType

owl:DatatypeProperty

Classification of coverage. Values: primary, secondary, dental, vision.

Domain: coverage:InsurancePlanRange: xsd:string

coverage:effectiveStart

owl:DatatypeProperty

Start date of coverage period.

Domain: coverage:InsurancePlanRange: xsd:date

coverage:effectiveEnd

owl:DatatypeProperty

End date of coverage period.

Domain: coverage:InsurancePlanRange: xsd:date

Subscriber (v1.0)

coverage:subscriberId

owl:DatatypeProperty

Identifier for the policy holder from the insurer.

Domain: coverage:InsurancePlanRange: xsd:string

coverage:subscriberName

owl:DatatypeProperty

Name of insurance subscriber (the primary policyholder).

Domain: coverage:InsurancePlanRange: xsd:string

coverage:subscriberRelationship

owl:DatatypeProperty

Relationship of patient to subscriber. Values: self, spouse, child, parent, other.

Domain: coverage:InsurancePlanRange: xsd:string

Pharmacy Benefits (v1.0)

coverage:rxBin

owl:DatatypeProperty

Pharmacy benefit BIN (Bank Identification Number). Used for prescription drug claims processing.

Domain: coverage:InsurancePlanRange: xsd:string

coverage:rxPcn

owl:DatatypeProperty

Pharmacy benefit PCN (Processor Control Number). Used for prescription drug claims routing.

Domain: coverage:InsurancePlanRange: xsd:string

coverage:rxGroup

owl:DatatypeProperty

Pharmacy benefit group number.

Domain: coverage:InsurancePlanRange: xsd:string

Deductible Properties (v1.1)

coverage:deductibleAmount

owl:DatatypeProperty

Annual deductible limit amount.

Domain: coverage:DeductibleRange: xsd:decimal

coverage:deductibleCurrency

owl:DatatypeProperty

Currency code for the deductible amount (e.g., USD).

Domain: coverage:DeductibleRange: xsd:string

coverage:deductibleMetAmount

owl:DatatypeProperty

Amount of the deductible that has been met so far in the coverage period.

Domain: coverage:DeductibleRange: xsd:decimal

coverage:deductiblePeriod

owl:DatatypeProperty

The benefit year or period this deductible applies to (e.g., 2026).

Domain: coverage:DeductibleRange: xsd:string

coverage:deductibleType

owl:DatatypeProperty

Deductible category. Values: individual, family, in-network, out-of-network.

Domain: coverage:DeductibleRange: xsd:string

CopaySchedule Properties (v1.1)

coverage:copayAmount

owl:DatatypeProperty

Copay amount for this service category.

Domain: coverage:CopayScheduleRange: xsd:decimal

coverage:copayCurrency

owl:DatatypeProperty

Currency code for the copay amount.

Domain: coverage:CopayScheduleRange: xsd:string

coverage:copayType

owl:DatatypeProperty

Service category this copay applies to. Values: primary-care, specialist, emergency, prescription.

Domain: coverage:CopayScheduleRange: xsd:string

ClaimRecord Properties (v1.1)

coverage:claimDate

owl:DatatypeProperty

Date and time the claim was submitted.

Domain: coverage:ClaimRecordRange: xsd:dateTime

coverage:claimTotal

owl:DatatypeProperty

Total billed amount for the claim.

Domain: coverage:ClaimRecordRange: xsd:decimal

coverage:claimStatus

owl:DatatypeProperty

Current status of the claim. Values: active, cancelled, draft, entered-in-error.

Domain: coverage:ClaimRecordRange: xsd:string

coverage:claimType

owl:DatatypeProperty

Type of claim. Values: professional, institutional, oral, pharmacy, vision.

Domain: coverage:ClaimRecordRange: xsd:string

coverage:billingProvider

owl:DatatypeProperty

Name or identifier of the provider that submitted the claim.

Domain: coverage:ClaimRecordRange: xsd:string

coverage:hasDiagnosis

owl:DatatypeProperty

ICD-10 code URI for the diagnosis supporting this claim.

Domain: coverage:ClaimRecordRange: xsd:string

coverage:hasProcedure

owl:DatatypeProperty

CPT or SNOMED code URI for the procedure billed in this claim.

Domain: coverage:ClaimRecordRange: xsd:string

coverage:sourceRecordId

owl:DatatypeProperty

Original source system record identifier. No domain restriction — shared by ClaimRecord and BenefitStatement.

Range: xsd:string

BenefitStatement Properties (v1.1)

coverage:adjudicationDate

owl:DatatypeProperty

Date and time the claim was adjudicated by the insurer.

Domain: coverage:BenefitStatementRange: xsd:dateTime

coverage:adjudicationStatus

owl:DatatypeProperty

Processing status of the adjudication. Values: completed, cancelled, entered-in-error.

Domain: coverage:BenefitStatementRange: xsd:string

coverage:outcomeCode

owl:DatatypeProperty

Processing outcome of the adjudication. Values: queued, complete, error, partial.

Domain: coverage:BenefitStatementRange: xsd:string

coverage:denialReason

owl:DatatypeProperty

Free-text denial reason from the EOB. For structured denial workflow, use coverage:DenialNotice with coverage:denialReasonCode.

Domain: coverage:BenefitStatementRange: xsd:string

coverage:totalBilled

owl:DatatypeProperty

Total amount billed by the provider.

Domain: coverage:BenefitStatementRange: xsd:decimal

coverage:totalAllowed

owl:DatatypeProperty

Total allowed amount per the insurer's fee schedule.

Domain: coverage:BenefitStatementRange: xsd:decimal

coverage:totalPaid

owl:DatatypeProperty

Amount paid by the insurer.

Domain: coverage:BenefitStatementRange: xsd:decimal

coverage:patientResponsibility

owl:DatatypeProperty

Amount the patient owes (copay + coinsurance + deductible portion).

Domain: coverage:BenefitStatementRange: xsd:decimal

coverage:relatedClaim

owl:ObjectProperty

Links an ExplanationOfBenefit to its corresponding ClaimRecord.

Domain: coverage:BenefitStatementRange: coverage:ClaimRecord

DenialNotice Properties (v1.2–1.3)

coverage:deniedProcedureCode

owl:DatatypeProperty — v1.2

CPT or HCPCS code of the denied service (e.g., E0787 for CGM).

Domain: coverage:DenialNoticeRange: xsd:string

coverage:denialReasonCode

owl:DatatypeProperty — v1.2

Structured coded denial reason. Recommended values are coverage:DenialReasonCode named individuals (see below). Distinct from the free-text coverage:denialReason. Aligns with HL7 ClaimResponse adjudication and CARIN IG Blue Button STU2.

Domain: coverage:DenialNoticeRange: xsd:string

See also: HL7 adjudication, CARIN IG STU2

coverage:denialLetterDate

owl:DatatypeProperty — v1.2

Date the denial notice was issued. The appeal deadline clock starts from this date.

Domain: coverage:DenialNoticeRange: xsd:date

coverage:appealDeadline

owl:DatatypeProperty — v1.2

Computed deadline for filing an appeal, based on the denial date, plan type, and applicable jurisdiction rules.

Domain: coverage:DenialNoticeRange: xsd:date

coverage:coveragePolicyReference

owl:DatatypeProperty — v1.2

The LCD, NCD, or coverage policy cited as the basis for denial (e.g., LCD L33822).

Domain: coverage:DenialNoticeRange: xsd:string

coverage:deniedClinicalContext

owl:ObjectProperty — v1.3

References clinical or health records in the Pod that are relevant to this denial — procedures, lab results, diagnoses, device readings. Enables appeals to cite specific clinical evidence against policy criteria. Range is intentionally open (rdfs:Resource) to allow linking across clinical:, health:, and pots: namespaces.

Domain: coverage:DenialNoticeRange: rdfs:Resource

AppealRecord Properties (v1.2–1.3)

coverage:appealLevel

owl:DatatypeProperty — v1.2

The administrative level of this appeal. Values: redetermination, qio_reconsideration, alj_hearing, mac_review, federal_court, internal_level1, internal_level2, external_review, state_insurance_dept, litigation.

Domain: coverage:AppealRecordRange: xsd:string

coverage:appealFiledDate

owl:DatatypeProperty — v1.2

Date the appeal was formally filed.

Domain: coverage:AppealRecordRange: xsd:date

coverage:appealOutcome

owl:DatatypeProperty — v1.2

Outcome of the appeal. Values: approved, denied, partial, withdrawn, pending.

Domain: coverage:AppealRecordRange: xsd:string

coverage:appealOutcomeDate

owl:DatatypeProperty — v1.2

Date the appeal outcome was received.

Domain: coverage:AppealRecordRange: xsd:date

coverage:relatedDenialNotice

owl:ObjectProperty — v1.2

Links an AppealRecord to the DenialNotice it contests.

Domain: coverage:AppealRecordRange: coverage:DenialNotice

coverage:outcomeReason

owl:DatatypeProperty — v1.3

Free-text explanation of why the appeal was approved, denied, or partially approved. Captures the insurer's stated rationale for the outcome.

Domain: coverage:AppealRecordRange: xsd:string

coverage:reversalAmount

owl:DatatypeProperty — v1.3

Reimbursement amount granted if the appeal was approved or partially approved. Expressed as a decimal in the currency of the related InsurancePlan.

Domain: coverage:AppealRecordRange: xsd:decimal

DenialReasonCode Named Individuals (v1.3)

Standard-mapped enumeration values for coverage:denialReasonCode. Use these named individuals to enable structured, machine-readable denial tracking. Aligns with HL7 ClaimResponse adjudication codes and the CARIN IG for Blue Button STU2.

Named Individual Label Standard Alignment
coverage:NotMedicallyNecessary Not Medically Necessary HL7 adjudication noauth; CMS reason 50
coverage:LCDCriteriaNotMet LCD Criteria Not Met CMS Local Coverage Determination
coverage:NCDCriteriaNotMet NCD Criteria Not Met CMS National Coverage Determination
coverage:ServiceNotCovered Service Not Covered HL7 adjudication benefit
coverage:PriorAuthorizationRequired Prior Authorization Required HL7 adjudication noauth; X12 835 reason code 4
coverage:DuplicateClaim Duplicate Claim X12 835 reason code 18
coverage:InformationRequested Additional Information Requested X12 835 reason code 16

FHIR Alignment

The Coverage Vocabulary aligns with multiple FHIR R4 resources.

Coverage Class/Property FHIR Alignment
coverage:InsurancePlan fhir:Coverage
coverage:providerName Coverage.payor (display)
coverage:memberId Coverage.identifier
coverage:groupNumber Coverage.class (group)
coverage:planName Coverage.class (plan)
coverage:planType Coverage.type
coverage:effectiveStart Coverage.period.start
coverage:effectiveEnd Coverage.period.end
coverage:subscriberId Coverage.subscriberId
coverage:subscriberRelationship Coverage.relationship
coverage:ClaimRecord fhir:Claim
coverage:BenefitStatement fhir:ExplanationOfBenefit
coverage:DenialNotice fhir:ExplanationOfBenefit (denied outcome)
coverage:AppealRecord fhir:Task

Usage Examples

Insurance Plan (v1.0)

@prefix coverage: <https://ns.cascadeprotocol.org/coverage/v1#> .
@prefix cascade: <https://ns.cascadeprotocol.org/core/v1#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<#insurance-primary> a coverage:InsurancePlan ;
    cascade:schemaVersion "1.3" ;
    cascade:dataProvenance cascade:SelfReported ;
    coverage:providerName "Blue Cross Blue Shield" ;
    coverage:memberId "XYZ123456789" ;
    coverage:groupNumber "GRP-98765" ;
    coverage:planType "ppo" ;
    coverage:coverageType "primary" ;
    coverage:effectiveStart "2026-01-01"^^xsd:date ;
    coverage:effectiveEnd "2026-12-31"^^xsd:date ;
    coverage:subscriberRelationship "self" .

Denial Notice with Clinical Context (v1.3)

@prefix coverage: <https://ns.cascadeprotocol.org/coverage/v1#> .
@prefix health: <https://ns.cascadeprotocol.org/health/v1#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<#denial-001> a coverage:DenialNotice ;
    coverage:deniedProcedureCode "E0787" ;
    coverage:denialReasonCode coverage:NotMedicallyNecessary ;
    coverage:denialLetterDate "2026-03-01"^^xsd:date ;
    coverage:appealDeadline "2026-04-01"^^xsd:date ;
    coverage:coveragePolicyReference "LCD L33822" ;
    coverage:deniedClinicalContext </health/devices/cgm-readings-q1.ttl> ,
                                    </clinical/conditions/diabetes-t1.ttl> .

<#appeal-001> a coverage:AppealRecord ;
    coverage:relatedDenialNotice <#denial-001> ;
    coverage:appealLevel "redetermination" ;
    coverage:appealFiledDate "2026-03-15"^^xsd:date ;
    coverage:appealOutcome "approved" ;
    coverage:appealOutcomeDate "2026-04-10"^^xsd:date ;
    coverage:outcomeReason "Patient meets LCD L33822 criteria — CGM medically necessary for Type 1 diabetes with documented hypoglycemia unawareness." ;
    coverage:reversalAmount 1200.00 .

Recommended Storage

The recommended Solid Pod storage layout for coverage data places insurance plans under a dedicated /coverage/ directory. Each record is stored as its own Turtle file, enabling fine-grained access control and independent updates.

/coverage/
    plans/
        {plan-id}.ttl          # InsurancePlan instances
    deductibles/
        {year}.ttl             # Annual deductible tracking
    denials/
        {denial-id}.ttl        # DenialNotice instances (v1.2+)
    appeals/
        {appeal-id}.ttl        # AppealRecord instances (v1.2+)

SHACL Validation Shapes

Validation shapes for this vocabulary are defined in coverage.shapes.ttl.

Shapes defined:

  • coverage:InsurancePlanShape — Validates InsurancePlan instances with required provider name, member ID, plan type, and coverage type
  • coverage:ClaimRecordShape — Validates ClaimRecord instances
  • coverage:BenefitStatementShape — Validates BenefitStatement (EOB) instances
  • coverage:DenialNoticeShape — Validates DenialNotice instances
  • coverage:AppealRecordShape — Validates AppealRecord instances

All shapes use sh:minCount 0 (permissive) — properties are optional unless marked required.

Changelog

Version 1.3 (2026-03-17)

  • Added coverage:DenialReasonCode class — enumeration class for structured denial reason codes with HL7 and CARIN IG alignment
  • Added 7 named individuals: coverage:NotMedicallyNecessary, coverage:LCDCriteriaNotMet, coverage:NCDCriteriaNotMet, coverage:ServiceNotCovered, coverage:PriorAuthorizationRequired, coverage:DuplicateClaim, coverage:InformationRequested
  • Added coverage:deniedClinicalContext (ObjectProperty, domain: DenialNotice) — open-range link to clinical evidence in the Pod supporting an appeal
  • Added coverage:outcomeReason (DatatypeProperty, domain: AppealRecord) — free-text explanation of the appeal outcome
  • Added coverage:reversalAmount (DatatypeProperty, domain: AppealRecord) — reimbursement amount for approved appeals

Version 1.2 (2026-03-16)

  • Added coverage:DenialNotice class (prov:Entity subclass, fhir:ExplanationOfBenefit alignment) with 5 properties: deniedProcedureCode, denialReasonCode, denialLetterDate, appealDeadline, coveragePolicyReference
  • Added coverage:AppealRecord class (prov:Activity subclass, fhir:Task alignment) with 5 properties: appealLevel, appealFiledDate, appealOutcome, appealOutcomeDate, relatedDenialNotice
  • Recommended Pod storage paths added: /coverage/denials/, /coverage/appeals/

Version 1.1 (2026-03-12)

  • Added coverage:ClaimRecord class (fhir:Claim alignment) with 7 properties: claimDate, claimTotal, claimStatus, claimType, billingProvider, hasDiagnosis, hasProcedure
  • Added coverage:BenefitStatement class (fhir:ExplanationOfBenefit alignment) with 9 properties: adjudicationDate, adjudicationStatus, outcomeCode, denialReason, totalBilled, totalAllowed, totalPaid, patientResponsibility, relatedClaim
  • Added coverage:sourceRecordId (no-domain property, shared by ClaimRecord and BenefitStatement)
  • Added fill properties to coverage:Deductible: deductibleAmount, deductibleCurrency, deductibleMetAmount, deductiblePeriod, deductibleType
  • Added fill properties to coverage:CopaySchedule: copayAmount, copayCurrency, copayType
  • Added SHACL shapes for all new classes in coverage.shapes.ttl (permissive, sh:minCount 0)

Version 1.0 (2026-02-18)

  • Initial release with InsurancePlan class and 14 properties:
    • 8 core properties: providerName, memberId, groupNumber, planName, planType, coverageType, effectiveStart, effectiveEnd
    • 3 subscriber properties: subscriberId, subscriberName, subscriberRelationship
    • 3 pharmacy benefit properties: rxBin, rxPcn, rxGroup
  • Added Deductible and CopaySchedule classes (properties deferred to v1.1)
  • FHIR Coverage resource alignment documented
  • Part of Schema Refactoring Plan Phase 2 (WS4)