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

## : Integration Test Plan – QR Code Generation and Validation Flow - XML Representation

Active as of 2026-03-12

Raw xml | Download

    <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-12T12:40:14+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>