Scalable Consent Management Testing Guide
1.0.0-ballot - ci-build United States of America flag

Scalable Consent Management Testing Guide - Local Development build (v1.0.0-ballot) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

TestScript: 03 Operations - All SUT | 01 Operation: File a Consent

Official URL: http://hl7.org/fhir/us/consent-management-tg/TestScript/01-Operation-File-a-Consent Version: 1.0.0-ballot
Standards status: Trial-use Maturity Level: 1 Computable Name: Test_01_Operation_File_a_Consent

Copyright/Legal: (c) AEGIS.net, Inc. 2026

Happy Path: Perform a successful Consent/$fileConsent operation. Test a client and server to verify support for the Consent $fileConsent operation, supporting the FAST Consent Management IG Version: CI. This scenario is generic and can be used with any FHIR format and query parameters. See https://wildfhir4.wildfhir.org/ig/fhir-consent-management-tg/rtm_test_cases.html#testcase-68 Test System Details (in order of appearance): [Origin 1: Consent Client's RESTful client. System Under Test: this must be an external test system (not Touchstone).] [Destination 1: Consent Admin Service's RESTful FHIR Server. System Under Test: this must be an external test system (not a mock).] [Origin 2: Touchstone's RESTful client. Simulated: this requires Touchstone to be chosen as the test system.]

AEGIS Touchstone Testing TestScript Rule Extension

  • ruleId: GetVariable-FhirPath
  • path: /FHIRCommon/_reference/rule/GetVariable-FhirPath.groovy

AEGIS Touchstone Testing TestScript Rule Extension

  • ruleId: AssertBodyExists
  • path: /FHIRCommon/_reference/rule/AssertBodyExists.groovy

StructureDefinition Work Group: cbcc

url: TestScript 03 Operations - All SUT | 01 Operation: File a Consent

version: 1.0.0-ballot

name: Test_01_Operation_File_a_Consent

title: 03 Operations - All SUT | 01 Operation: File a Consent

status: Active

date: 2026-03-30

publisher: HL7 International / Community Based Collaborative Care

contact: HL7 International / Community Based Collaborative Care: http://www.hl7.org/Special/committees/cbcc

description:

Happy Path: Perform a successful Consent/$fileConsent operation. Test a client and server to verify support for the Consent $fileConsent operation, supporting the FAST Consent Management IG Version: CI. This scenario is generic and can be used with any FHIR format and query parameters. See https://wildfhir4.wildfhir.org/ig/fhir-consent-management-tg/rtm_test_cases.html#testcase-68 Test System Details (in order of appearance): [Origin 1: Consent Client's RESTful client. System Under Test: this must be an external test system (not Touchstone).] [Destination 1: Consent Admin Service's RESTful FHIR Server. System Under Test: this must be an external test system (not a mock).] [Origin 2: Touchstone's RESTful client. Simulated: this requires Touchstone to be chosen as the test system.]

jurisdiction: United States of America

copyright:

(c) AEGIS.net, Inc. 2026

origin

index: 1

profile: Test script profile origin type: FHIR-Client (FHIR Client)

origin

index: 2

profile: Test script profile origin type: FHIR-Client (FHIR Client)

Destinations

-IndexProfile
*1Test script profile destination type: FHIR-Server (FHIR Server)

profile:

test

name: Step_001_Consent_slash_dollar_fileConsent_operation

description: Consent Client invokes the Consent/$fileConsent operation at Consent Admin Service.

action

Operations

-TypeResourceDescriptionDestinationEncodeRequestUrlMethodOriginParamsRequestIdResponseId
*testscript-operation-codes-extended: post (post)ConsentConsent/$fileConsent operation.1truePOST1/$fileConsentdest-1-FHIRExtendedOperation-1-requestdest-1-FHIRExtendedOperation-1-response

action

Asserts

-ExtensionDescriptionDirectionExpressionValidateProfileIdWarningOnly
*Confirm that the resource(s) in the request body at FHIRPath 'Parameters' conform to profile 'FileConsentParameters'.requestParametersFileConsentParametersfalse

action

Asserts

-ExtensionDescriptionDirectionSourceIdWarningOnly
*, Save the identifier from the request so we can search for it in the next step and check its status.requestdest-1-FHIRExtendedOperation-1-requesttrue

test

name: Step_002_Consent_search

description: Touchstone searches for Consent resources at Consent Admin Service, with query parameters: identifier = ${ConsentIdentifier}. Because there is no defined way to extract the id of the newly created Consent from the $fileConsent response, we will search by the identifier we saved from the $fileConsent request, confirm it was created, and is active.

action

Operations

-TypeResourceDescriptionAcceptDestinationEncodeRequestUrlOriginParamsRequestIdResponseId
*Test script operation code: search (Search)ConsentSearch for Consent resources.json1true2?identifier=${ConsentIdentifier}dest-1-FHIRSearch-1-requestdest-1-FHIRSearch-1-response

action

Asserts

-ExtensionDescriptionDirectionOperatorResponseCodeSourceIdWarningOnly
*Confirm that the returned HTTP status is 200 OK.responsein200dest-1-FHIRSearch-1-responsefalse

action

Asserts

-ExtensionDescriptionDirectionWarningOnly
*Confirm that the response body exists.responsefalse

action

Asserts

-ExtensionDescriptionDirectionResourceWarningOnly
*Confirm that the response resource type is Bundle.responseBundlefalse

action

Asserts

-ExtensionDescriptionDirectionValidateProfileIdWarningOnly
*Confirm that the response Bundle conforms to the base FHIR Bundle profile. This also validates the contents against any declared profiles.responseBundle-profilefalse

action

Asserts

-ExtensionDescriptionDirectionExpressionOperatorValueWarningOnly
*Confirm that the response Bundle type is searchset.responseBundle.typeequalssearchsetfalse

action

Asserts

-ExtensionDescriptionDirectionExpressionOperatorSourceIdValueWarningOnly
*Confirm that at least one Consent resource is in the response.responseBundle.entry.select(resource as Consent).exists()equalsdest-1-FHIRSearch-1-responsetruefalse

action

Asserts

-ExtensionDescriptionDirectionExpressionOperatorSourceIdValueWarningOnly
*Confirm the status of the Consent just filed is active.responseBundle.entry.select(resource as Consent).status = 'active'equalsdest-1-FHIRSearch-1-responsetruefalse