Run a FHIR quality gate from any pipeline.
Start with local files and machine-readable output. Connect the same CLI to Records when you need runs, baselines, deltas, and evidence.
Available now · v0.1.1 · Apache-2.0
Smallest useful example
Turn a directory into a CI contract.
Run the same command locally and in CI. Machine-readable output and the process exit code let the pipeline own the gate.
npx @records-fhir/cli@0.1.1 validate-file ./fhir \ --format junitExpected contract
What comes back
A deterministic exit status plus JUnit output that can be published by the existing test-reporting step in the pipeline.
| Runtime | Workstation or CI runner with a supported Node.js LTS release (22 or 24) |
|---|---|
| Local mode | Basic structural checks on files and directories; no account or Records instance required |
| Connected mode | Adds configured runs, accepted baselines, comparison and evidence through Records |
One input, a concrete finding, a verified correction.
Recorded local CLI execution with downloadable input and output.
records validate-file patient-before.json --format jsonpatient-before.json
{ "active": "true"}Patient.active
{ "message": "'active' must be boolean (JS boolean), got string"}patient-after.json
{ "active": true}Change Patient.active from "true" to true. Revalidation changes the exit code from 1 to 0.
Synthetic FHIR R4 · CLI 0.1.3 · Executed locally on 15 September 2026
View complete JSON
String instead of boolean
{ "resourceType": "Patient", "id": "synthetic-cli-patient", "active": "true"}Patient.active fails validation
{ "success": false, "mode": "local", "files": 1, "results": [ { "file": "patient-before.json", "resourceType": "Patient", "score": 85, "mode": "local", "errors": 1, "warnings": 0, "issues": [ { "severity": "error", "code": "invalid-type", "path": "Patient.active", "message": "'active' must be boolean (JS boolean), got string", "aspect": "structural" } ] } ]}Correction verified
{ "success": true, "mode": "local", "files": 1, "results": [ { "file": "patient-after.json", "resourceType": "Patient", "score": 100, "mode": "local", "errors": 0, "warnings": 0, "issues": [] } ]}A hosted CI job and a connected workspace run are separate integrations.
Built for one clear integration job
Choose the functions your integration needs.
No-install local validation
Validate one file or a directory directly from npx.
CI-native contract
Use deterministic exit codes plus JSON or JUnit output in any Node.js pipeline.
Connected Records workflows
Point the CLI at Records for configured profile sets, runs, baselines, comparison, and export.
Saved runs, comparisons and reports require a Records workspace.
Scope
The boundary
Know what this surface owns before you put it into a workflow.
What remains outside this surface
Local mode validates the files you provide. It does not create Records run history, compare live environments, or produce governed evidence until connected to a Records instance.
Continue with the exact next question
Release & CI
CI/CD quality gate
See the release decision the CLI can support.
Package
View the CLI on npm
Install or run the current public package.
Source
Browse the source
Read command and configuration examples.
Records
Explore the workspace workflow
See how investigation, saved runs, comparison and the final report connect in Records.