Skip to content

Health Card Eligibility Extension

Canonical../StructureDefinition/health-card-eligibility
Statusdraft · 1.26.0
BaseExtension (constraint)
ContextPatient.identifier (element)
SourceFSH · JSON

The payer's settled answer about one provincial health card, carried on the card's own Identifier, together with a marker for a check that could not reach the payer.

Overview

It belongs to one exact card. A card is a province, a number and a version code together, and an answer given for one card says nothing about a card that has since changed. Carried here, the answer is discarded with the card it was about rather than outliving it on the patient.

It belongs on the health card and on nothing else. Patient.identifier also carries the medical record number, the legacy paper chart number and whatever identifiers a source system contributed, and a payer eligibility answer means nothing on any of them. The extension's contextInvariant requires the identifier it rides to carry the HL7 v2-0203 type JHN (jurisdictional health number), which is the same discriminator the Patient profile uses to recognise a provincial health number. An eligibility answer stamped on an MRN or a chart number is not merely unhelpful; it is invalid.

answeredAt is when the payer gave THIS answer, not when the patient was last checked. The answer is rewritten only when it changes, so a check that confirms an existing answer leaves the moment alone. Nothing may infer freshness from it: an answer dated months ago may have been reconfirmed this morning.

A failed attempt is not an answer. attemptFailedAt records that a check could not reach the payer. It never touches the answer children, so the last real answer survives an outage, and it dates the failure rather than the answer, so freshness cannot be inferred from it either. It is cleared by the next check that reaches the payer. An extension carrying only attemptFailedAt carries no answer at all.

Read the answer whole or not at all. eligible and answeredAt are both required, and a malformed coverageExpiry invalidates the whole answer rather than being dropped -- dropping it would hand back an answer that reads as covered indefinitely. An unreadable attemptFailedAt is the one child held to a softer rule: it reads as no marker, because a corrupt display-only child must not be able to hide a real answer.

Absence of coverageExpiry is not an unlimited entitlement. It means the payer delivered no expiry with this answer.

coverageExpiry is DEPRECATED. Write the expiry to Identifier.period.end instead. R4 defines Identifier.period as the time period during which the identifier is or was valid for use, which is exactly what a card's coverage expiry is, and this guide already records the Indian status card's expiry there on the same resource. A child duplicating a base element gives a reader two places to look and no rule for which wins when they disagree. The child stays defined because answers already stored carry it and must keep reading back; a producer that has not moved yet is not thereby nonconformant. Readers SHOULD read Identifier.period.end first and fall back to coverageExpiry, and SHOULD NOT treat a disagreement between them as an error -- prefer Identifier.period.end.

MIGRATION. Nexus EMR writes this extension today at http://services.well.com/fhir/identifier/eligibility (FHIR-381): that address is live in stored patient records and in code, and is under migration to the canonical declared here. Write the canonical; when reading, match both addresses exactly. The final segments differ (eligibility against health-card-eligibility), so a suffix rule does not reach the pre-migration one and a reader built on it misses every answer stored before the writer moves.