Skip to content

Coverage Profile

Canonical../StructureDefinition/nexus-emr-core-coverage
Statusdraft (experimental) · 1.26.0
BaseCoverage (constraint)
SourceFSH · JSON

Nexus EMR profile for Coverage -- the payor context for billing and the demo dataset. First pass: the Ontario-GP shape (public plan keyed by the patient's health-card number, payor as a logical Organization reference). Private/extended plans and coordination of benefits are deliberately unmodelled. Closed to SMART apps pending an exposure decision.

TypedFhir API / Pydantic schema

The typed accessor surface Coverage exposes for Coverage — generated from this IG's compiled profile; each typed accessor has a validating raw-FHIR twin (xRaw) where marked. The three ports are parity-enforced.

The AI-facing shape: from typed_fhir.facade.generated.schemas import CoverageSchemamodel_json_schema() is a structured-output / tool definition; instantiating validates an extraction. Generated source.

class CoverageSchema(BaseModel):
    """AI-facing shape of the Coverage profile: the facade's typed accessor
    surface (curated + salient fields) as a pydantic model. `model_json_schema()` is a
    structured-output / tool schema; instantiating validates an extraction."""

    model_config = ConfigDict(extra="forbid")

    status: Literal["active", "cancelled", "draft", "entered-in-error"] | None = Field(
        None,
        description=(
            "active | cancelled | draft | entered-in-error. The status of the resource instance. "
            "Note: This element is labeled as a modifier because the status contains the code "
            "entered-in-error that marks the coverage as not currently valid. Coverage.status — "
            "1..1"
        ),
    )
    type: Concept | None = Field(
        None,
        description=(
            "Kind of coverage (public provincial plan, private, ...). The type of coverage: "
            "social program, medical plan, accident coverage (workers compensation, auto), group "
            "health or payment by an individual or organization. Note: First pass leaves the "
            "vocabulary open: OHIP rides as text + a payor identifier; a plan-type value set is "
            "deferred until a second plan actually flows. Where this code was mapped from a "
            "source system's own vocabulary, carry the raw coding alongside the mapped one, "
            "flagged `userSelected = true`. See [Carrying the raw "
            "code](../guide/patterns/raw-codes.md). Coverage.type — 0..1"
        ),
    )
    subscriber_id: str | None = Field(
        None,
        description=(
            "The patient's identifier with the insurance plan. The identifier the PLAN knows the "
            "covered person by. For Ontario's public plan this is the health card number; the "
            "same value appears on Patient.identifier under the canadian-phn-systems machinery -- "
            "this element carries the value the payor bills against, it does not replace the "
            "Patient identifier slice. Note: For OHIP this is the health card number. "
            "Coverage.subscriberId — 0..1"
        ),
    )
    beneficiary: Reference | None = Field(
        None,
        description=(
            "The patient covered. The party who benefits from the insurance coverage; the patient "
            "when products and/or services are provided. Coverage.beneficiary — 1..1"
        ),
    )
    relationship: Concept | None = Field(
        None,
        description=(
            "Beneficiary relationship to the subscriber. The relationship of beneficiary "
            "(patient) to the subscriber. Note: Typically, an individual uses policies which are "
            "theirs (relationship='self') before policies owned by others. Coverage.relationship "
            "— 0..1. codes (extensible): child | common | injured | other | parent | self | "
            "spouse"
        ),
    )
    period: dict | None = Field(
        None,
        description=(
            "Coverage validity period, when the source records one. Time period during which the "
            "coverage is in force. A missing start date indicates the start date isn't known, a "
            "missing end date means the coverage is continuing to be in force. Coverage.period — "
            "0..1"
        ),
    )
    payor: Reference | None = Field(
        None,
        description=(
            "Who pays -- typically a LOGICAL Organization reference (e.g. OHIP). The payor "
            "organization. A logical reference (Reference.identifier naming the plan authority, "
            "display carrying the human-readable name) is the expected first-pass shape -- "
            "provincial payors are not resources the EMR maintains. Note: May provide multiple "
            "identifiers such as insurance company identifier or business identifier (BIN "
            "number). For selfpay it may provide multiple paying persons and/or organizations. "
            "Coverage.payor — 1..*"
        ),
    )