Verifiable Health Link
0.0.2-current - ci-build International flag

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-13

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-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="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>