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.
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:InsurancePlan • Range: xsd:string
coverage:memberId
owl:DatatypeProperty
Insurance policy member/subscriber ID number.
Domain: coverage:InsurancePlan • Range: xsd:string
coverage:groupNumber
owl:DatatypeProperty
Employer group number for employer-sponsored plans.
Domain: coverage:InsurancePlan • Range: xsd:string
coverage:planName
owl:DatatypeProperty
Name of the insurance plan (e.g., "Gold PPO 500").
Domain: coverage:InsurancePlan • Range: xsd:string
coverage:planType
owl:DatatypeProperty
Type of insurance plan. Values: hmo, ppo, epo,
pos, hdhp, medicare, medicaid,
tricare, other.
Domain: coverage:InsurancePlan • Range: xsd:string
coverage:coverageType
owl:DatatypeProperty
Classification of coverage. Values: primary, secondary,
dental, vision.
Domain: coverage:InsurancePlan • Range: xsd:string
coverage:effectiveStart
owl:DatatypeProperty
Start date of coverage period.
Domain: coverage:InsurancePlan • Range: xsd:date
coverage:effectiveEnd
owl:DatatypeProperty
End date of coverage period.
Domain: coverage:InsurancePlan • Range: xsd:date
Subscriber (v1.0)
coverage:subscriberId
owl:DatatypeProperty
Identifier for the policy holder from the insurer.
Domain: coverage:InsurancePlan • Range: xsd:string
coverage:subscriberName
owl:DatatypeProperty
Name of insurance subscriber (the primary policyholder).
Domain: coverage:InsurancePlan • Range: xsd:string
coverage:subscriberRelationship
owl:DatatypeProperty
Relationship of patient to subscriber. Values: self, spouse,
child, parent, other.
Domain: coverage:InsurancePlan • Range: xsd:string
Pharmacy Benefits (v1.0)
coverage:rxBin
owl:DatatypeProperty
Pharmacy benefit BIN (Bank Identification Number). Used for prescription drug claims processing.
Domain: coverage:InsurancePlan • Range: xsd:string
coverage:rxPcn
owl:DatatypeProperty
Pharmacy benefit PCN (Processor Control Number). Used for prescription drug claims routing.
Domain: coverage:InsurancePlan • Range: xsd:string
coverage:rxGroup
owl:DatatypeProperty
Pharmacy benefit group number.
Domain: coverage:InsurancePlan • Range: xsd:string
Deductible Properties (v1.1)
coverage:deductibleAmount
owl:DatatypeProperty
Annual deductible limit amount.
Domain: coverage:Deductible • Range: xsd:decimal
coverage:deductibleCurrency
owl:DatatypeProperty
Currency code for the deductible amount (e.g., USD).
Domain: coverage:Deductible • Range: xsd:string
coverage:deductibleMetAmount
owl:DatatypeProperty
Amount of the deductible that has been met so far in the coverage period.
Domain: coverage:Deductible • Range: xsd:decimal
coverage:deductiblePeriod
owl:DatatypeProperty
The benefit year or period this deductible applies to (e.g., 2026).
Domain: coverage:Deductible • Range: xsd:string
coverage:deductibleType
owl:DatatypeProperty
Deductible category. Values: individual, family,
in-network, out-of-network.
Domain: coverage:Deductible • Range: xsd:string
CopaySchedule Properties (v1.1)
coverage:copayAmount
owl:DatatypeProperty
Copay amount for this service category.
Domain: coverage:CopaySchedule • Range: xsd:decimal
coverage:copayCurrency
owl:DatatypeProperty
Currency code for the copay amount.
Domain: coverage:CopaySchedule • Range: xsd:string
coverage:copayType
owl:DatatypeProperty
Service category this copay applies to. Values: primary-care,
specialist, emergency, prescription.
Domain: coverage:CopaySchedule • Range: xsd:string
ClaimRecord Properties (v1.1)
coverage:claimDate
owl:DatatypeProperty
Date and time the claim was submitted.
Domain: coverage:ClaimRecord • Range: xsd:dateTime
coverage:claimTotal
owl:DatatypeProperty
Total billed amount for the claim.
Domain: coverage:ClaimRecord • Range: xsd:decimal
coverage:claimStatus
owl:DatatypeProperty
Current status of the claim. Values: active, cancelled,
draft, entered-in-error.
Domain: coverage:ClaimRecord • Range: xsd:string
coverage:claimType
owl:DatatypeProperty
Type of claim. Values: professional, institutional,
oral, pharmacy, vision.
Domain: coverage:ClaimRecord • Range: xsd:string
coverage:billingProvider
owl:DatatypeProperty
Name or identifier of the provider that submitted the claim.
Domain: coverage:ClaimRecord • Range: xsd:string
coverage:hasDiagnosis
owl:DatatypeProperty
ICD-10 code URI for the diagnosis supporting this claim.
Domain: coverage:ClaimRecord • Range: xsd:string
coverage:hasProcedure
owl:DatatypeProperty
CPT or SNOMED code URI for the procedure billed in this claim.
Domain: coverage:ClaimRecord • Range: 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:BenefitStatement • Range: xsd:dateTime
coverage:adjudicationStatus
owl:DatatypeProperty
Processing status of the adjudication. Values: completed,
cancelled, entered-in-error.
Domain: coverage:BenefitStatement • Range: xsd:string
coverage:outcomeCode
owl:DatatypeProperty
Processing outcome of the adjudication. Values: queued,
complete, error, partial.
Domain: coverage:BenefitStatement • Range: 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:BenefitStatement • Range: xsd:string
coverage:totalBilled
owl:DatatypeProperty
Total amount billed by the provider.
Domain: coverage:BenefitStatement • Range: xsd:decimal
coverage:totalAllowed
owl:DatatypeProperty
Total allowed amount per the insurer's fee schedule.
Domain: coverage:BenefitStatement • Range: xsd:decimal
coverage:totalPaid
owl:DatatypeProperty
Amount paid by the insurer.
Domain: coverage:BenefitStatement • Range: xsd:decimal
coverage:patientResponsibility
owl:DatatypeProperty
Amount the patient owes (copay + coinsurance + deductible portion).
Domain: coverage:BenefitStatement • Range: xsd:decimal
coverage:relatedClaim
owl:ObjectProperty
Links an ExplanationOfBenefit to its corresponding ClaimRecord.
Domain: coverage:BenefitStatement • Range: 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:DenialNotice • Range: 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:DenialNotice • Range: 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:DenialNotice • Range: 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:DenialNotice • Range: 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:DenialNotice • Range: 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:DenialNotice • Range: 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:AppealRecord • Range: xsd:string
coverage:appealFiledDate
owl:DatatypeProperty — v1.2
Date the appeal was formally filed.
Domain: coverage:AppealRecord • Range: xsd:date
coverage:appealOutcome
owl:DatatypeProperty — v1.2
Outcome of the appeal. Values: approved, denied,
partial, withdrawn, pending.
Domain: coverage:AppealRecord • Range: xsd:string
coverage:appealOutcomeDate
owl:DatatypeProperty — v1.2
Date the appeal outcome was received.
Domain: coverage:AppealRecord • Range: xsd:date
coverage:relatedDenialNotice
owl:ObjectProperty — v1.2
Links an AppealRecord to the DenialNotice it contests.
Domain: coverage:AppealRecord • Range: 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:AppealRecord • Range: 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:AppealRecord • Range: 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 typecoverage:ClaimRecordShape— Validates ClaimRecord instancescoverage:BenefitStatementShape— Validates BenefitStatement (EOB) instancescoverage:DenialNoticeShape— Validates DenialNotice instancescoverage: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:DenialReasonCodeclass — 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:DenialNoticeclass (prov:Entitysubclass, fhir:ExplanationOfBenefit alignment) with 5 properties:deniedProcedureCode,denialReasonCode,denialLetterDate,appealDeadline,coveragePolicyReference - Added
coverage:AppealRecordclass (prov:Activitysubclass, 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:ClaimRecordclass (fhir:Claim alignment) with 7 properties:claimDate,claimTotal,claimStatus,claimType,billingProvider,hasDiagnosis,hasProcedure - Added
coverage:BenefitStatementclass (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
InsurancePlanclass 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
DeductibleandCopayScheduleclasses (properties deferred to v1.1) - FHIR Coverage resource alignment documented
- Part of Schema Refactoring Plan Phase 2 (WS4)