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

## : Test Plan – VHL Receiver - XML Representation

Active as of 2026-03-12

Raw xml | Download

    <TestPlan xmlns="http://hl7.org/fhir">
      <id value="TestPlan-VHLReceiver"/>
      <url
           value="https://profiles.ihe.net/ITI/VHL/TestPlan/TestPlan-VHLReceiver"/>
      <version value="0.0.2-current"/>
      <name value="TestPlan_VHLReceiver"/>
      <title value="Test Plan – VHL Receiver"/>
      <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="Unit test plan for the **VHL Receiver** actor of the IHE ITI Verifiable Health Links (VHL) profile.

    Scope: validates all behaviour expected of a VHL Receiver across its four transactions:
    submitting its own PKI material (ITI-YY1 initiator), retrieving the trust list (ITI-YY2
    initiator), decoding and validating a VHL QR code (ITI-YY4 responder), and requesting the
    document manifest (ITI-YY5 initiator). Each test suite exercises three atomic feature files."/>
      <jurisdiction>
        <coding>
          <system value="http://unstats.un.org/unsd/methods/m49/m49.htm"/>
          <code value="001"/>
        </coding>
      </jurisdiction>
      <scope>🔗
        <reference value="ActorDefinition/VHLReceiver"/>
      </scope>
      <testCase>
        <sequence value="1"/>
        <testRun>
          <narrative
                     value="**ITI-YY1 Message Semantics** – Shared message format file."/>
          <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/ITI-YY1-submit-pki-material-message.feature"/>
              <display value="ITI-YY1 Submit PKI Material – Message Semantics"/>
            </sourceReference>
          </script>
        </testRun>
        <testRun>
          <narrative
                     value="**ITI-YY1 VHL Receiver Initiator Expected Actions** – The VHL Receiver shares the same
    initiator requirements as the VHL Sharer: key pair generation, submission pathway, provenance
    metadata, response handling, and private key retention."/>
          <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/ITI-YY1-submit-pki-material-initiator.feature"/>
              <display
                       value="ITI-YY1 Submit PKI Material – VHL Receiver Initiator Expected Actions"/>
            </sourceReference>
          </script>
        </testRun>
        <testRun>
          <narrative
                     value="**ITI-YY1 Security Considerations** – Shared security file."/>
          <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/ITI-YY1-submit-pki-material-security.feature"/>
              <display
                       value="ITI-YY1 Submit PKI Material – Security Considerations"/>
            </sourceReference>
          </script>
        </testRun>
      </testCase>
      <testCase>
        <sequence value="2"/>
        <testRun>
          <narrative
                     value="**ITI-YY2 Message Semantics** – Shared message format file."/>
          <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/ITI-YY2-retrieve-trust-list-message.feature"/>
              <display value="ITI-YY2 Retrieve Trust List – Message Semantics"/>
            </sourceReference>
          </script>
        </testRun>
        <testRun>
          <narrative
                     value="**ITI-YY2 VHL Receiver Initiator Expected Actions** – Verifies that the VHL Receiver correctly
    constructs retrieval requests, validates and caches returned DID Documents, maps public keys to
    intended uses, tracks expiry, handles revocation notifications, and processes error responses.
    Source: sections 2:3.YY2.4.1, 2:3.YY2.4.2.3, and 2:3.YY2.5."/>
          <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/ITI-YY2-retrieve-trust-list-initiator.feature"/>
              <display
                       value="ITI-YY2 Retrieve Trust List – VHL Receiver Initiator Expected Actions"/>
            </sourceReference>
          </script>
        </testRun>
        <testRun>
          <narrative
                     value="**ITI-YY2 Security Considerations** – Shared security file."/>
          <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/ITI-YY2-retrieve-trust-list-security.feature"/>
              <display
                       value="ITI-YY2 Retrieve Trust List – Security Considerations"/>
            </sourceReference>
          </script>
        </testRun>
      </testCase>
      <testCase>
        <sequence value="3"/>
        <testRun>
          <narrative
                     value="**ITI-YY4 Message Semantics** – Verifies the VHL QR code message format: ISO/IEC 18004:2015
    Alphanumeric mode, HC1: prefix, Base45 encoding, ZLIB/DEFLATE compression, CWT structure
    (protected header: alg/kid, claims: exp/iat/hcert), and SHL payload fields (url/key/flag/exp)."/>
          <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/ITI-YY4-provide-vhl-message.feature"/>
              <display value="ITI-YY4 Provide VHL – Message Semantics"/>
            </sourceReference>
          </script>
        </testRun>
        <testRun>
          <narrative
                     value="**ITI-YY4 VHL Receiver Responder Expected Actions** – Verifies the complete nine-step decode
    pipeline: QR scanning (ISO/IEC 18004:2015), HC1: verification, Base45 decoding, ZLIB
    decompression, CWT parsing (RFC 8392), COSE signature verification (RFC 8152) using the
    trust list, CWT claims validation (exp/iat), hcert extraction (claim key -260 / 5), and SHL
    payload validation (url/key/flag/exp). Also covers post-decoding actions, all decode failure
    rejections, and optional acknowledgment.
    Source: sections 2:3.YY4.4.1.4 (Receiver Expected Actions) and 2:3.YY4.5 (Security)."/>
          <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/ITI-YY4-provide-vhl-responder.feature"/>
              <display
                       value="ITI-YY4 Provide VHL – VHL Receiver Responder Expected Actions"/>
            </sourceReference>
          </script>
        </testRun>
        <testRun>
          <narrative
                     value="**ITI-YY4 Security Considerations** – Verifies signature verification requirements, trust list
    enforcement, expiry enforcement, PHI exclusion from the QR payload, and acknowledgment safety."/>
          <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/ITI-YY4-provide-vhl-security.feature"/>
              <display value="ITI-YY4 Provide VHL – Security Considerations"/>
            </sourceReference>
          </script>
        </testRun>
      </testCase>
      <testCase>
        <sequence value="4"/>
        <testRun>
          <narrative
                     value="**ITI-YY5 Message Semantics** – Shared message format file."/>
          <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/ITI-YY5-retrieve-manifest-message.feature"/>
              <display value="ITI-YY5 Retrieve Manifest – Message Semantics"/>
            </sourceReference>
          </script>
        </testRun>
        <testRun>
          <narrative
                     value="**ITI-YY5 VHL Receiver Initiator Expected Actions** – Verifies request construction (HTTP POST
    /List/_search), HTTP Message Signature creation (Content-Digest, Signature-Input with keyid/alg/created,
    Signature), OAuth with FAST Option (client_credentials, private_key_jwt, required scopes, Bearer
    header, token caching), TLS requirements, and Bundle response processing (match/include search.mode,
    individual DocumentReference retrieval fallback).
    Source: sections 2:3.YY5.4.1 (Request Message) and 2:3.YY5.5.2 (HTTP Message Signatures)."/>
          <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/ITI-YY5-retrieve-manifest-initiator.feature"/>
              <display
                       value="ITI-YY5 Retrieve Manifest – VHL Receiver Initiator Expected Actions"/>
            </sourceReference>
          </script>
        </testRun>
        <testRun>
          <narrative
                     value="**ITI-YY5 Security Considerations** – Shared security file."/>
          <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/ITI-YY5-retrieve-manifest-security.feature"/>
              <display
                       value="ITI-YY5 Retrieve Manifest – Security Considerations"/>
            </sourceReference>
          </script>
        </testRun>
      </testCase>
    </TestPlan>