SMART Health Cards and Links FHIR IG, published by HL7 International / FHIR Infrastructure. This guide is not an authorized publication; it is the continuous build for version 1.0.0-ballot built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/smart-health-cards-and-links/ and changes regularly. See the Directory of published versions
Official URL: http://hl7.org/fhir/uv/smart-health-cards-and-links/OperationDefinition/patient-i-health-cards-issue | Version: 1.0.0-ballot | |||
Draft as of 2021-03-08 | Computable Name: HealthCardsIssue |
This operation enables a FHIR-enabled issuer to request or generate a specific type of SMART Health Card
Generated Narrative: OperationDefinition patient-i-health-cards-issue
URL: [base]/Patient/[id]/$health-cards-issue
Parameters
Use | Name | Scope | Cardinality | Type | Binding | Documentation |
IN | credentialType | 1..* | uri | |||
IN | credentialValueSet | 0..* | uri | |||
IN | includeIdentityClaim | 0..* | string | |||
IN | _since | 0..1 | dateTime | |||
OUT | verifiableCredential | 0..* | string | |||
OUT | resourceLink | 0..* | ||||
OUT | resourceLink.vcIndex | 0..1 | integer | |||
OUT | resourceLink.bundledResource | 1..1 | uri | |||
OUT | resourceLink.hostedResource | 1..1 | uri |
A Health Wallet can POST /Patient/:id/$health-cards-issue
to a FHIR-enabled issuer to request or generate a specific type of Health Card. The body of the POST looks like:
{
"resourceType": "Parameters",
"parameter": [{
"name": "credentialType",
"valueUri": "Immunization"
}]
}
The credentialType
parameter is required. This parameter restricts the request
by high-level categories based on FHIR Resource Types such as “Observation” or
“Immunization”. See FHIR Resource Types.
Type-based filters evaluate Health Cards based on the FHIR resource types within the Health Card payload at .vc.credentialSubject.fhirBundle.entry[].resource
. Multiple credentialType
parameters in one request SHALL be interpreted as a request for Health Cards that contain all of the requested types (logical AND). To maintain compatibility with the initial release of this specification, servers SHOULD process
#immunization
as Immunization
, and #laboratory
as Observation
.
The following parameters are optional; clients MAY include them in a request, and servers MAY ignore them if present.
credentialValueSet
. Restricts the request by FHIR
content such as “any standardized vaccine code for mpox”. See Health Card ValueSets.
Valueset-based filters apply to the FHIR Resources within the Health Card
payload at .vc.credentialSubject.fhirBundle.entry[].resource
. For
Immunizations, the Immunization.vaccineCode
is evaluated. For Observations,
the Observation.code
is evaluated. Multiple credentialValueSet
parameters
in one request SHALL be interpreted as a request for credentials with content
from all of the supplied Valuesets (logical AND).{
"resourceType": "Parameters",
"parameter": [{
"name": "credentialType",
"valueUri": "Immunization"
}, {
"name": "credentialValueSet",
"valueUri": "https://terminology.smarthealth.cards/ValueSet/immunization-orthopoxvirus-all"
}]
}
includeIdentityClaim
. By default, the issuer will decide which identity claims to include, based on profile-driven guidance. If the Health Wallet wants to fine-tune identity claims in the generated credentials, it can provide an explicit list of one or more includeIdentityClaim
s, which will limit the claims included in the VC. For example, to request that only name be included:{
"resourceType": "Parameters",
"parameter": [{
"name": "credentialType",
"valueUri": "Immunization"
}, {
"name": "includeIdentityClaim",
"valueString": "Patient.name"
}]
}
_since
. By default, the issuer will return Health Cards of any age. If the Health Wallet wants to request only cards pertaining to data since a specific point in time, it can provide a _since
parameter with a valueDateTime
(which is an ISO8601 string at the level of a year, month, day, or specific time of day using the extended time format; see FHIR dateTime datatype for details). For example, to request only COVID-19 data since March 2021:{
"resourceType": "Parameters",
"parameter": [{
"name": "credentialType",
"valueUri": "Immunization"
}, {
"name": "_since",
"valueDateTime": "2021-03"
}]
}
The response is a Parameters
resource that includes one more more verifiableCredential
values like:
{
"resourceType": "Parameters",
"parameter":[{
"name": "verifiableCredential",
"valueString": "<<Health Card as JWS>>"
}]
}
If no results are available, a Parameters
resource without any parameter
is returned:
{
"resourceType": "Parameters"
}
In the response, an optional repeating resourceLink
parameter can capture the link between any number of hosted FHIR resources and their derived representations within the verifiable credential’s .credentialSubject.fhirBundle
, allowing the health wallet to explicitly understand these correspondences between bundledResource
and hostedResource
, without baking details about the hosted endpoint into the signed credential. The optional vcIndex
value on a resourceLink
can be used when a response contains more than one VC, to indicate which VC this resource link applies to. The vcIndex
is a zero-based index of a verifiableCredential
entry within the top-level parameter
array.
{
"resourceType": "Parameters",
"parameter": [{
"name": "verifiableCredential",
"valueString": "<<Health Card as JWS>>"
}, {
"name": "resourceLink",
"part": [{
"name": "vcIndex",
"valueInteger": 0
}, {
"name": "bundledResource",
"valueUri": "resource:2"
}, {
"name": "hostedResource",
"valueUri": "https://fhir.example.org/Immunization/123"
}]
}]
}