Health Card Eligibility Extension¶
| Canonical | ../StructureDefinition/health-card-eligibility |
|---|---|
| Status | draft · 1.26.0 |
| Base | Extension (constraint) |
| Context | Patient.identifier (element) |
| Source | FSH · 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.