TestReport — FHIR test result
A TestScript has been executed against a server: TestReport carries the detailed result (pass/fail per action, duration, messages).
Purpose
TestReport is the output of a FHIR test engine (Crucible, Touchstone, HAPI Validation Suite). Used for ONC certification audits (US), IHE qualifications, and Implementation Guide validators (US Core, IPS, FR Core).
Key fields
| Field | Type | Cardinality | Role |
|---|---|---|---|
status | code | 1..1 | completed, in-progress, waiting, stopped, entered-in-error. |
testScript | Reference(TestScript) | 1..1 | Executed script. |
result | code | 1..1 | pass, fail, pending. |
score | decimal | 0..1 | Numeric pass score. |
tester | string | 0..1 | Test executor name. |
issued | dateTime | 0..1 | Issue date. |
participant | BackboneElement[] | 0..* | Tested servers/clients. |
setup / teardown / test | BackboneElement | 0..1 / 0..1 / 0..* | Test phases. |
JSON example
US Core 100% pass report:
{
"resourceType": "TestReport",
"id": "example",
"status": "completed",
"testScript": { "reference": "TestScript/uscore-patient" },
"result": "pass",
"score": 100.0,
"tester": "Crucible FHIR Tester",
"issued": "2026-05-16T14:30:00Z",
"participant": [{
"type": "server",
"uri": "https://fhir.example.org/r5"
}],
"setup": {
"action": [{
"operation": { "result": "pass", "message": "Connection OK" }
}]
}
} Common pitfalls
- result=pass but score < 100: contradiction, ambiguous for the receiver.
- No testScript: orphan report, not replayable.
- Too much action detail: for very large TestScripts (full US Core), TestReport can be several MB.
Related resources
- TestScript — The test script.
- TestPlan — Enclosing plan.
- CapabilityStatement — Capabilities of the tested server.
- ImplementationGuide — IG whose conformances are tested.