Verifiable Health Link, published by IHE IT Infrastructure Technical Committee. This guide is not an authorized publication; it is the continuous build for version 0.0.2-current built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/IHE/ITI.VHL/ and changes regularly. See the Directory of published versions
The Provide VHL transaction enables a VHL Holder to transmit a Verified Health Link (VHL) to a VHL Receiver. The VHL serves as a signed authorization mechanism that allows the Receiver to subsequently retrieve one or more health documents from a VHL Sharer (via ITI-YY5).
The VHL is transmitted as a QR code containing an HCERT-encoded payload with the HC1: prefix. VHL Receivers scan the QR code to extract the VHL payload for subsequent document retrieval.
The Provide VHL transaction enables a VHL Holder to transmit a Verified Health Link (VHL) to a VHL Receiver. The VHL serves as a signed authorization mechanism that allows the Receiver to subsequently retrieve one or more health documents from a VHL Sharer.
Depending on the use case, the VHL MAY be rendered or transmitted using formats such as QR code or deep link (HTTPS URL).
A VHL Holder initiates the Provide VHL transaction when:
The VHL Holder wishes to grant access to their health documents to a VHL Receiver
The VHL Holder has obtained a valid VHL from a VHL Sharer (via ITI-YY3 Generate VHL transaction)
The VHL Holder encounters a VHL Receiver capable of processing VHLs in a relevant healthcare context
2:3.YY4.4.1.2 Message Semantics
The VHL payload structure is defined in ITI-YY3 and aligns with the SMART Health Links specification.
QR Code Transmission
The VHL is transmitted via QR code with the following characteristics:
VHL encoded as HCERT QR code with HC1: prefix
Suitable for in-person encounters, walk-in clinics, emergency departments
QR code contains HCERT/CWT structure with embedded SHL payload
Can be displayed on screen or printed on paper
Minimum recommended diagonal size: 35-60mm
2:3.YY4.4.1.3 Expected Actions - VHL Holder
The VHL Holder SHALL:
Verify QR code validity (not expired, CWT signature valid)
Display QR code on device screen or provide printed copy
Provide passcode out-of-band if VHL is passcode-protected (P flag present)
Ensure QR code is displayed at appropriate size for reliable scanning
The VHL Holder MAY:
Maintain record of QR code presentations
Revoke VHL access if supported by VHL Sharer
2:3.YY4.4.1.4 Expected Actions - VHL Receiver
The VHL Receiver SHALL be capable of receiving a Verified Health Link (VHL) from a VHL Holder through a supported transport mechanism (e.g., QR code scan, direct URL, or digital message).
Upon receipt, the Receiver SHALL:
Parse the VHL
Validate its digital signature against a trusted key published by a recognized Trust Anchor
Prepare to retrieve the associated health documents
Receipt of the VHL may occur through direct user interaction (e.g., scanning a QR code) or automated channels, depending on the implementation context.
Upon receiving a VHL via QR code, the VHL Receiver SHALL perform the following 9-step decoding process:
Scan QR Code:
Use QR code scanner (camera, dedicated scanner, or software library)
Capture QR code image displayed on screen or printed on paper
Decode the QR code per ISO/IEC 18004:2015 in Alphanumeric mode
Provide visual feedback to user during scanning process
Verify Context Identifier:
Extract the complete string from the QR code
Verify the string begins with HC1: prefix (HCERT context identifier)
If prefix is missing or incorrect, reject and inform user
Remove the HC1: prefix from the string
Base45 Decode:
Decode the remaining string using Base45 decoding algorithm
Result is a compressed byte array
Handle any Base45 decoding errors appropriately
Decompress ZLIB/DEFLATE:
Decompress the byte array using ZLIB (RFC 1950) with DEFLATE (RFC 1951)