All Classes and Interfaces
Class
Description
Authentication configuration for a server backend.
Pluggable strategy for turning an interactive SMART
authorization_endpoint
response into the next request that continues EhrLaunchProvider's
fullWalk authorization-code flow.Authentication mechanism for a server backend.
Registry of available FHIR server backends for test execution.
Saves and restores HAPI bootstrap artifacts (committed Docker image and
pg_dump
SQL file) to/from a container registry.Configuration for cache operations.
Thrown when a bootstrap or cache operation fails.
A choice-type (
xxx[x]) element with a specific must-support type, produced by the
elementdefinition-type-must-support extension (algorithm.md §3.3), e.g.SmartAuthProvider strategy for the OAuth2 client_credentials grant used by
SMART Backend Services clients - a confidential, system-to-system client authenticating with
its own client_id/client_secret rather than a user login, the one strategy
this package's design explicitly left unbuilt until frog-runner needed to write to a real
write-capable FHIR tenant (see fhirfrog/sparked-fhir-server-configuration#95).Pluggable hook for attaching headers to every outgoing FHIR request made by a
TestScriptEngine run.Generates a Docker Compose file with two profiles for HAPI FHIR testing.
Same row model as
ExcelReportRenderer (both share TestReportRowExtractor), but
a plain CSV rather than an XLSX binary - for a consumer that wants to import into a spreadsheet
tool other than Excel, or script against the data directly, without needing an XLSX parser.AST node representing a dependency.
Performs a one-time HAPI FHIR bootstrap and captures the loaded server state as a
committed Docker image plus a
pg_dump SQL file.Configuration for a bootstrap run.
SmartAuthProvider strategy for the SMART App Launch 2.0 EHR launch flow -
the case where an EHR (or an EHR simulator such as ehr.smartforms.io) launches an
app with an opaque or base64-JSON launch token, rather than the app being started
standalone the way FormLoginPkceProvider drives it.One workbook, one row per operation/assertion across every
TestReport in a run - the
#1 priority format (test managers), per add-report-export-and-rest-api's design.md.Ant task that performs a one-time HAPI FHIR bootstrap and captures the loaded
server state as a committed Docker image plus a
pg_dump SQL file.Ant task that saves and restores HAPI bootstrap artifacts (committed Docker image
and
pg_dump SQL file) to/from a container registry.Ant task that generates Docker Compose and HAPI FHIR configuration files from
an IG's
sushi-config.yaml.Stores TestReport to a FHIR server via HTTP POST.
Configuration for FHIR test execution.
JUnit 5 extension for FHIR test script execution.
Maven Mojo for executing FHIR TestScripts and TestPlans.
Ant task for executing FHIR TestScripts and TestPlans.
FHIR version enumeration.
Stores TestReport to file system.
A plain must-support element's own fixed/pattern literal-value constraint (algorithm.md §3.4
rule 2).
SmartAuthProvider strategy that drives the plain-HTTP PKCE authorization-code
flow with Spring Security form login used by aehrc-quokka-hapi-smart's own test
IdP: GET /oauth2/authorize → GET /login → scrape the CSRF
token → POST /login → follow the redirect for the authorization code
→ POST /oauth2/token.One compiled, literal, per-instance FHIRPath check derived from a profile's must-support or
mandatory-element requirements (algorithm.md §7, §5.11) - the compiler's actual output artifact.
Generates HAPI FHIR
application.yaml and application-test.yaml from a
PackageClassifier.ClassificationResult.Loads one IG package plus its full transitive dependency closure and exposes canonical-URL
lookups against it - the compiler's one and only source of profile/datatype-profile/ValueSet/
CodeSystem data.
Executes tests programmatically using JUnit Platform Launcher.
Generates JUnit 5 dynamic tests from FHIR R5 TestPlan resources.
JUnit XML built from each
TestReport's own setup/test/teardown
structure (via the shared TestReportRowExtractor), not from fhir-frog-ant's
older JUnitExecutor.ExecutionResult/TestFailure model - see
add-report-export-and-rest-api's design.md, task group 3.The SMART launch context decoded from a token-endpoint JSON response: the
patient/encounter identifiers, id_token, granted scope,
token lifetime, and any fhirContext entries (SMART App Launch's mechanism for the
EHR to hand the launched app a set of relevant resources up front - e.g. launching
straight into a pre-selected Questionnaire).One entry of a SMART
fhirContext launch-context array - see the SMART App
Launch spec's "fhirContext" launch parameter.Resolves local (
dev/current) FHIR packages from the filesystem cache
into tgz archives suitable for mounting into a Docker container.Result of resolving local packages.
Main entry point for FHIR Frog CLI.
Same row model as
ExcelReportRenderer/CsvReportRenderer (all three share
TestReportRowExtractor), rendered as plain Markdown - an overall pass/fail summary up
top, then a heading and an assertion table per TestReport.A must-support extension slot (algorithm.md §3.1):
elementId is the extension element's
own id (e.g.Classifies FHIR packages from the local package cache as include, exclude, or skip
for a given target FHIR version (R4 or R5).
Result of classifying a full dependency tree.
A resolved package reference with name and version.
Which of the four pattern-discriminator sub-shapes (algorithm.md §3.2.1's
resolve_pattern)
a slice's discriminator sub-element carried its identifying constraint as.A readable, presentable document - this change's "execs" format per design.md's Decision 3
("test managers get clear tables, execs get something presentable"), as opposed to the raw
tabular Excel/CSV/Markdown formats.
A "plain" must-support element (algorithm.md §3.4) - whatever's left after extensions, slices,
and choice-type must-support elements (§3.3) are removed.
Thrown for a compile-time problem that isn't specifically about slice discriminator resolution
(see
UnsupportedDiscriminatorException for that) or ValueSet expansion (see
ValueSetNotLocallyEnumerableException) - e.g. a snapshot missing where one was required,
or a must-support extension with no type.profile to check against.The full must-support/mandatory derivation for one profile (algorithm.md §2/§3/§4), before
compilation to literal FHIRPath.
The compiler's top-level entry point:
ProfileRequirementsCompiler.deriveRequirements(org.hl7.fhir.r4.model.StructureDefinition) implements algorithm.md §2-§4
(must-support extraction, partitioned per §3.0, plus mandatory-element extraction per §4) and
ProfileRequirementsCompiler.compileAssertions(org.hl7.fhir.r4.model.StructureDefinition) implements the per-instance literal-FHIRPath translation (§7, this
change's tasks.md 5.11).Executes TestScript/TestPlan files via DynamicTest execution.
Renders TestReport in different formats.
Storage interface for TestReport resources.
How a server backend is reset between test runs.
A resolved FHIR server backend that tests can execute against.
The two runtime strengths a compiled must-support check can carry, per algorithm.md §7.3: a
missing mandatory (min>0) requirement is a hard failure, a missing optional (must-support,
min=0) requirement is a warning.
A single must-support slice requirement (algorithm.md §3.2), resolved via exactly one of the
three implemented discriminator strategies.
A slice identified by a single fixed/pattern value at the discriminator's sub-path
(algorithm.md §3.2.1's
patternCodeableConcept/patternCoding/
patternIdentifier branches).A slice identified by required-strength ValueSet membership at the discriminator's
sub-path (algorithm.md §3.2.1's
requiredBinding branch) - a disjunction over
codes, expanded eagerly at compile time from locally-loaded IG packages only
(see ValueSetExpander; not from a terminology server).A choice-element slice identified purely by concrete datatype (algorithm.md §3.2.2), e.g.
A slice identified by several independent fixed sub-paths that must all match together on
the same candidate element (algorithm.md §3.2.3) - a conjunction over
matches.Thrown when a
SmartAuthProvider strategy fails to obtain an access token - e.g.A pluggable strategy for obtaining a SMART on FHIR access token.
Trivial
SmartAuthProvider wrapping a pre-obtained access token, for targets
where the token is fetched out-of-band (e.g. a token pasted in from a manual browser
login, or obtained by some other tool entirely outside fhir-frog).Reads the
dependencies block from a sushi-config.yaml file.AST node representing a TestCase.
AST node representing test data.
Executes every TestScript (or the single TestPlan closure) discovered in a resolved Test IG
package -
"<id>#<version>", e.g.Simple executor for TestPlan files without JUnit dependency.
AST node representing a TestPlan.
Parser for fhir-frog TestPlans.
JUnit 5 dynamic test provider for recursive TestPlan execution.
One test case's result from
TestPlanProvider.executeAll(org.fhirfrog.frog.testplan.TestPlanResource, org.fhirfrog.frog.testplan.VariableContext) - the programmatic counterpart to what
TestPlanProvider.generateTests(org.fhirfrog.frog.testplan.TestPlanResource, org.fhirfrog.frog.testplan.VariableContext)'s JUnit DynamicTests only report as pass/fail.One test case's static structure from
TestPlanProvider.discover(org.fhirfrog.frog.testplan.TestPlanResource) - the same identifying/dependency
fields as TestPlanProvider.TestCaseResult, minus the execution-only ones (success,
message, testReport) that don't exist until something has actually run.In-memory representation of a fhir-frog TestPlan, populated by
TestPlanParser from the
real frog-test-plan FHIR resource (a Basic profile - see
fhir-frog-library/src/main/fsh/input/fsh/FrogTestPlan.fsh for the full design
rationale: a Basic-backed backport of FHIR R5's own still-status=draft/FMM-0 TestPlan).Deprecated.
One operation or assertion within a
TestReport, flattened for the row/table-based
renderers (Excel, CSV, Markdown, JUnit XML) - each of those needs the same shape, just encoded
differently, so the TestReport-walking logic lives once in TestReportRowExtractor
rather than being repeated per format.Flattens a
TestReport's setup/test/teardown structure into
TestReportRows - the one place this walk happens, shared by every row/table-based
renderer (Excel, CSV, Markdown, JUnit XML) added by add-report-export-and-rest-api.Deprecated.
Use
org.fhirfrog.frog.internal.testscript.TestScriptEngine.ExecutionResult#getTestReport()
to obtain the FHIR TestReport directly.Provides access to test execution results.
AST node representing a test run.
A display-only, human-readable rendering of a FHIR
TestScript definition.A single
TestScript.fixture entry.One phase of test execution:
setup, a single test entry, or teardown.Which part of the TestScript a
TestScriptDisplay.PhaseDisplay corresponds to.Whether/how a failing
TestScriptDisplay.StepDisplay gates the phase's pass/fail outcome.A single step within a phase: one
operation or one assert.Whether a
TestScriptDisplay.StepDisplay is an operation (a wire call) or an assert (a check on the last response).A single
TestScript.variable entry.Walks a HAPI
TestScript model object and produces the display-only
TestScriptDisplay tree that TestScriptHtmlRenderer (or any other future
renderer) turns into a browsable document.Simple executor for TestScript files without JUnit dependency.
Renders a
TestScriptDisplay tree as a single, self-contained HTML fragment: a
narrative-first, technical-detail-secondary document, matching the content model
frog-runner's live UI already uses for execution results (narrative line first, a monospace
technical line underneath, nothing hidden behind extra clicks) - just applied here to the test
*definition* rather than a run's outcome.Minimal, directory-in/HTML-files-out CLI over this module's renderer - not a general
framework, just enough to let another build (e.g. an IG's own CI) turn a folder of
TestScript resource files into browsable HTML fragments without a JVM dependency of its own.
Specifies the TestScript resource to execute for a test method.
ANTLR visitor that builds AST from parse tree.
This class provides an empty implementation of
TPHVisitor,
which can be extended to create a visitor which only needs to handle a subset
of the available methods.Compiles TPH AST to FHIR TestPlan resources.
Custom error listener that provides clear error messages with line numbers.
Exception thrown when TPH parsing fails.
Main entry point for parsing TPH files and compiling to FHIR TestPlan resources.
This interface defines a complete generic visitor for a parse tree produced
by
TPHParser.This class provides an empty implementation of
TSHListener,
which can be extended to create a listener which only needs to handle a subset
of the available methods.This class provides an empty implementation of
TSHVisitor,
which can be extended to create a visitor which only needs to handle a subset
of the available methods.Compiles TSH AST to FHIR TestScript resources.
This interface defines a complete listener for a parse tree produced by
TSHParser.Main entry point for parsing TSH files and compiling to FHIR TestScript resources.
This interface defines a complete generic visitor for a parse tree produced
by
TSHParser.Thrown at compile time when a must-support slice's discriminator can't be resolved by any of
this compiler's three implemented strategies (pattern/type/value) - most commonly because its
discriminator.type is exists or profile (2 of FHIR's 5 defined kinds,
genuinely unimplemented here; algorithm.md §8.1), but also raised for a pattern
discriminator whose resolved sub-element carries none of the four handled constraint shapes.Thrown when a
requiredBinding pattern-discriminator sub-case (algorithm.md §3.2.1) needs
a ValueSet's code list expanded, but that ValueSet's compose.include isn't fully
enumerable from the loaded IG package closure alone - e.g. it names an external code system
with no local CodeSystem resource and no explicit concept list.Hierarchical variable context for test execution.
Same content shape as
PdfReportRenderer - the "execs" format per design.md's
Decision 3 (presentable, not a raw data dump) - as a .docx rather than a PDF, for a
consumer who wants to edit/annotate the report (e.g. add reviewer comments) before circulating
it further.
TestReportis now built incrementally during execution and available viaExecutionResult.getTestReport().