Verifiable Health Link
0.0.2-current - ci-build
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
| Active as of 2026-03-13 |
<TestPlan xmlns="http://hl7.org/fhir">
<id value="TestPlan-QRCodeFlow"/>
<url value="https://profiles.ihe.net/ITI/VHL/TestPlan/TestPlan-QRCodeFlow"/>
<version value="0.0.2-current"/>
<name value="TestPlan_QRCodeFlow"/>
<title
value="Integration Test Plan – QR Code Generation and Validation Flow"/>
<status value="active"/>
<date value="2026-03-13T13:59:49+00:00"/>
<publisher value="IHE IT Infrastructure Technical Committee"/>
<contact>
<telecom>
<system value="url"/>
<value value="https://www.ihe.net/ihe_domains/it_infrastructure/"/>
</telecom>
</contact>
<contact>
<telecom>
<system value="email"/>
<value value="iti@ihe.net"/>
</telecom>
</contact>
<contact>
<name value="IHE IT Infrastructure Technical Committee"/>
<telecom>
<system value="email"/>
<value value="iti@ihe.net"/>
</telecom>
</contact>
<description
value="Integration test plan for the **QR Code Generation and Validation Flow** of the IHE ITI
Verifiable Health Links (VHL) profile.
Scope: validates multi-actor, cross-transaction scenarios that span ITI-YY3 (Generate VHL),
ITI-YY4 (Provide VHL), and ITI-YY5 (Retrieve Manifest). Tests verify that the QR code
generated in YY3 can be decoded in YY4, that the decoded SHL payload's manifest URL is used
correctly in YY5, and that the full end-to-end pipeline including passcode handling, signature
verification, and VHL authorization succeeds.
Actors exercised: VHL Holder, VHL Sharer, VHL Receiver."/>
<jurisdiction>
<coding>
<system value="http://unstats.un.org/unsd/methods/m49/m49.htm"/>
<code value="001"/>
</coding>
</jurisdiction>
<scope>🔗
<reference value="ActorDefinition/VHLHolder"/>
</scope>
<scope>🔗
<reference value="ActorDefinition/VHLSharer"/>
</scope>
<scope>🔗
<reference value="ActorDefinition/VHLReceiver"/>
</scope>
<testCase>
<sequence value="1"/>
<testRun>
<narrative
value="Execute all scenarios in the Gherkin integration feature file
`integration-qrcode-flow.feature`.
Scenario groups:
- **Group A – VHL Generation (YY3):** VHL Holder requests VHL; VHL Sharer generates a valid
HCERT-signed QR code; SHL payload URL is verifiable; passcode is retained by VHL Holder.
- **Group B – QR Presentation and Decoding (YY4):** VHL Receiver decodes the QR code
generated in Group A using the trust list; COSE signature verified; decoded manifest URL
matches the YY5 endpoint; passcode is obtained from VHL Holder when P flag is present.
- **Group C – Manifest Retrieval (YY5):** VHL Receiver uses the decoded folder ID and URL
to send an authenticated HTTP POST; VHL Sharer verifies the receiver's signature using the
trust list; correct passcode results in HTTP 200 Bundle; incorrect passcode results in 422.
- **Group D – Full End-to-End:** Complete flow from YY3 generation through YY4 decode to YY5
manifest retrieval succeeds; passcode-protected variant succeeds end-to-end.
- **Group E – Expired and Revoked VHL Rejection:** VHL Receiver rejects an expired QR code at
YY4 without proceeding to YY5; VHL Sharer returns 403 for a revoked VHL at YY5.
These scenarios require pipeline state: the QR code from YY3 feeds YY4, and the decoded
payload from YY4 feeds YY5."/>
<script>
<language>
<coding>
<system value="urn:ietf:bcp:13"/>
<code value="text/x-gherkin"/>
</coding>
<text value="Gherkin"/>
</language>
<sourceReference>
<reference
value="https://build.fhir.org/ig/IHE/ITI.VHL/integration-qrcode-flow.feature"/>
<display
value="Integration – QR Code Generation and Validation Flow"/>
</sourceReference>
</script>
</testRun>
</testCase>
</TestPlan>