Please note: Firely Terminal 4.0.0 requires the .NET 10 SDK. Install it before you run
dotnet tool update -g firely.terminal. With only an older SDK, the update fails with Settings file 'DotnetToolSettings.xml' was not found in the package, which does not mention .NET 10. In a pipeline, set your .NET setup step to10.0.x. Your login, stack and settings carry over from 3.5.0. See installing Firely Terminal.
The same results on your machine as on Simplifier
A profile that is valid in your local checks and invalid on Simplifier, or the other way round, costs you a round of guessing which one is right. In 4.0.0, Firely Terminal moves to the same SDK, validator and Quality Control rules as Simplifier, so the two agree on what is valid.
- References inside your project are resolved. An invariant that uses
resolve(), such as "the care team provider must be a Practitioner", is now checked against the resource the reference points to, as Simplifier does. Before, Firely Terminal could not follow the reference. - A resource with parsing issues is still validated.
fhir validatelists the parsing issues first, such as an unknown element, and then the validation results, instead of stopping at the first problem. - The rule series match Simplifier's default scripts.
minimalnow also checks yourpackage.json,freechecks that every resource has an id, andrecommendedadds checks on ids and names. Runfhir check --list --detailsto see what each series does. See Quality Control.
Expect some new findings. A project that passed minimal in 3.5.0 can fail it now, for instance when package.json misses its author. Simplifier's default rules report the same.
The legacy (netsdk) validator is retired. If you selected it, fhir validate stops and tells you to run fhir config validate firely.
Built for pipelines
When you validate in CI, the questions are when the build should fail and what the report should say.
- Choose what fails the build.
--fail-on error,--fail-on warningor--fail-on infoonfhir validateandfhir checksets the severity that makes the command exit with code 1. The older--failstill works but is deprecated. A mistyped flag now exits non-zero instead of silently passing. - Results as FHIR:
fhir check --output qc.jsonsaves the results as a Bundle with one OperationOutcome per file, in the shape the HL7 Java validator uses: the file in theoperationoutcome-fileextension, the message inissue.details.text. Tools that read the Java validator's output can read this too.fhir check --pushnow gives the same Bundle, so update anything that reads the old single OperationOutcome.
Our guide to automating Quality Control has updated examples for GitHub Actions, Azure DevOps and GitLab.
Other improvements
- Licensed commands marked:
fhir --helpnow shows which commands need a license. - Clearer messages:
fhir unzipwarns about files it cannot read, andfhir unzipandfhir splitreport how many resources they pushed.
What comes next.
We are already working on the next step: canonical pinning and multiple package versions. Firely Terminal will honour the version in a reference such as my-profile|1.2.0, so validation runs against the exact version you pinned, and will let two versions of one package share your project's scope. Simplifier already supports both.
Find the full list of changes in the Firely Terminal release notes. Update with dotnet tool update -g firely.terminal.
Share your feedback
If you have questions or ideas for future developments, do not hesitate to reach out to the Simplifier team. We'd love to hear your feedback.