avatar   Ardon  

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 to 10.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 validate lists 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. minimal now also checks your package.json, free checks that every resource has an id, and recommended adds checks on ids and names. Run fhir check --list --details to 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 warning or --fail-on info on fhir validate and fhir check sets the severity that makes the command exit with code 1. The older --fail still works but is deprecated. A mistyped flag now exits non-zero instead of silently passing.
  • Results as FHIR: fhir check --output qc.json saves the results as a Bundle with one OperationOutcome per file, in the shape the HL7 Java validator uses: the file in the operationoutcome-file extension, the message in issue.details.text. Tools that read the Java validator's output can read this too. fhir check --push now 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 --help now shows which commands need a license.
  • Clearer messages: fhir unzip warns about files it cannot read, and fhir unzip and fhir split report 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.

Other news from Firely
Ardon Toonstra
Firely Terminal `4.0.0` validates and runs Quality Control the way Simplifier does, and gives your pipelines better control over when a build fails. It is a major release: it runs on .NET 10 and the Firely .NET SDK 6, and a few things you may script against have changed.
Ardon Toonstra
The Forge 2026.3.0 release brings the two package changes Simplifier introduced this year to Forge: canonical pinning, and more than one version of a package in your project.
Ardon Toonstra
Simplifier now keeps every version of a package that your dependencies bring in and resolves your references predictably across them. This release also redesigns the guides overview and starts retiring DSTU2.
Ardon Toonstra
Earlier this year, we asked the Simplifier community how they use Simplifier, Forge, and Firely Terminal in their day-to-day FHIR work. First of all, thank you to everyone who took the time to participate.
Ardon Toonstra
Simplifier now runs entirely on Firely .NET SDK 6. This release brings a list of rendering improvements for your conformance resources, and consolidates our documentation in one place.
Ardon Toonstra
Forge 2026.2.0 upgrades the profiling engine to .NET 10 and Firely .NET SDK 6.2.1, adds support for the suppression extension, and speeds up loading of complex profiles. Quality Control now runs solely on the current Firely validator, and the Project view's Structure Type filter has been streamlined. Note that .NET 10 may need to be installed by your IT department on managed machines.
Ardon Toonstra
Simplifier.net now hosts country-specific results from the 2026 State of FHIR Survey, letting you explore how HL7 FHIR is being adopted in each participating jurisdiction.
Ardon Toonstra
This release lets you pin canonical references when creating a package, locking each one to the exact version it resolved to so your packages stay reproducible. Simplifier honours the version in a reference when resolving, with two new quality-control rules to help you pin safely. On top of that, the platform has moved to .NET 10, alongside a set of UI improvements and bug fixes.
Ardon Toonstra
The 2026 Simplifier User Survey is now open, and we need your input. Tell us which tools and features drive real value in your FHIR workflow, and where the platform can do better. It only takes a few minutes, and your response shapes what we build next.
Ward Weistra 🔥
Use this new skill to combine Firely Terminal with your AI-driven workflows to give your agent real tools to perform FHIR validation and not just guess.