validate FHIR resources
17 Min Read

How to Validate FHIR Resources Like a Boss

Ardon Toonstra
Ardon Toonstra

Subscribe to our newsletter


Part 2 of Hidden Gems on That Make Your FHIR Work Easier

Welcome to the second part of our series on‘s hidden gems and features! In our last article, we covered the best features to help you manage FHIR projects and resources. This time around we will dive into the world of FHIR validation. Let’s get started with an overview of what validation is.

Introduction to FHIR Validation

Validating FHIR resources is an important aspect of working with FHIR. It is a broad subject with many options and flavors. People will be interested in a specific aspect depending on how they use FHIR. Here we will focus on how FHIR validation is used for Standards Development and FHIR implementations.

Validating resources for Standards Development

HL7 FHIR R4 Conformance Resources overview, FHIR validation
FHIR R4 Conformance Resources overview

To define your FHIR standard (or specification) you need to create conformance resources such as StructureDefinitions and SearchParameters. This can be tedious and complex work. Luckily, tooling exists that can save you from becoming an IT robot. You can say goodbye to plain XML or JSON editing.

Building resources using a graphical user interface like Forge, which has live validation of your work, or using a domain-specific language like FHIR Shorthand will help to prevent errors. However, no matter how meticulous you build your conformance resources errors may still arise in your work. These errors are usually due to incorrect design or bugs in the tooling.

Nobody wants to publish work containing errors. Several methods exist to validate resources and each has its own capabilities, as shown in this overview of validation methods by the FHIR specification. As the first line of defense, schemas for XML and JSON or RTF schemas can be used in any schema-aware text editor. Each FHIR release contains schemas for all resources and can be downloaded in the download section. Created by the HL7 Publisher, they are also included in Implementation Guides. These schemas are also helpful in creating test instances.

XML schema for FHIR validation
XML schema validation in action
FHIR Server Endpoint for FHIR validation
Public Vonk FHIR Server – includes the .NET validator logic

Most tools incorporate run-time validation methods that make sure the output is valid against these schemas.

The second line of defense is to use a validator or even multiple validators. Most of the tooling ecosystem, including public reference FHIR servers, run on either the HL7 Java validator or the Firely .NET validator. Importing resources into these tools and invoking the validator will help identify problems.

Validating profiles for implementing FHIR

FHIR implementers are primarily interested in validating their implementation to check, for example, if they can send or serve resources that are compliant with a specific implementation guide. Validating conformance resources. are not necessarily of interest This requires validation of resources against profiles (conformance resources).

It is perfectly suited for validation purposes as is an online FHIR registry that is filled with profiles and packages. The Simplifier team invested a lot of time creating features that address validation for this reason. Before we proceed, you should know that all these validation features are accessible with a free account on, so feel free to sign up here. Now let’s dive into how can simplify your work. homepage, FHIR validation – The FHIR registry

Copy-paste validation —the simplest way to validate FHIR resources

The easiest and fastest way to validate any kind of FHIR resource is to copy and paste it to All you need is a free Simplifier account. This feature is useful for both profile authors and consumers.

By default, the input is validated against core specification and it will not be stored. It is possible to adjust the validation scope by choosing the FHIR version and within that a project or a published FHIR package. In most cases, I recommend the latter option as this offers a more stable context compared to projects. Nowadays, projects can be seen as the head of a develop branch. Scoping the validator provides assurance about knowing the exact validation context and it allows you to quickly check conformance against different specifications and versions. FHIR validation results validation results

Hitting the validate button leads you to the results section, as shown here on the left. The team provides a clear and understandable user interface to interpret the validation results. Apart from that neat looking layout, there are three features to highlight (see the red boxes on the screenshot above).

  1. The first feature allows you to filter options and choose to only see errors, warnings or informational messages.
  2. The second feature is highlighted on the right-hand side, where you can see corresponding .NET error codes for the validation results. These are linked to pages that contain more information.
  3. The third feature is my personal favorite, especially for validating long Bundle resources. It’s the option to view the output in XML. This view shows the validation results inline within the resource.

Hitting the back button brings you to the resource, ready to edit and test again! FHIR Validation results XML view inline validation results

From there, you can continue working on your resource and validation results by saving it to a snippet. This saves the resource to your own personal snippet collection, which is also convenient for sharing with others.

Snippet —your sketchpad for FHIR resources

The validator logic and user interface are reused in more places on, such as the Snippets act as your sketchpad to render, validate, and share any FHIR resource without having it persist in a serious project. They don’t have to be valid nor complete as the functionality is pretty robust. If you wish, you can edit everything afterward as well.

As described below, snippets have a validation scope that works in the same manner. The snippets can be shared with the given URL, providing the receiver with an XML, JSON, and rendered version of the resource. It is also possible to instantly share the validation results by appending $validate to the URL. For instance,$validate will lead you to the validation results. - saved snippet example for FHIR validation – saved snippet example

Validation of resources within projects

The validator is available for every FHIR resource that is uploaded to a project on This applies to both public and private projects and for conformance resources and examples. This option is particularly useful for authors of profiles, as this allows them to upload all resources and perform a validation step afterwards. - resource view in a project – resource view in a project

The validation context of this validator is set to the entire content of the project and its dependencies. Dependencies are managed in the dependency tab of a project. By default, a dependency on the FHIR core package is provided based on the FHIR version of the project. - dependency tab of a project – dependency tab of a project

Bulk validation

One of the features most anticipated by our customers is the ability to bulk validate resources. Think of this as validation of all resources within a project in one go. Well, good news, this is on its way! Stay tuned to get more helpful tools for quality assurance for your specification.

Other tools you can use for validation

If you want to expand your horizons, here are some other noteworthy validation methods.


Please note that this blog post was written before Vonk changed its name to Firely Server.

Vonk for FHIR validation
Vonk FHIR server

Reference FHIR servers are built with validation functionality. Vonk, the FHIR server by Firely, uses the .NET validator and has implemented the $validate operation. The $validate operation can be used to validate a resource that’s given in the body of a POST message or to validate a resource instance in the database against a profile. You can also configure Vonk to validate every incoming resource and even filter on specific profiles. Once Vonk is set up and filled with the right profiles, a client script, for example, build with the .NET FHIR library, could utilize the $validate operation to bulk validate resources.

The latest Vonk version of Vonk is hosted on Additionally, it is possible to run and configure your own version. To do so, download it from with an evaluation or community license.

Firely Terminal (formerly Torinox)

Torinox for FHIR validation
Firely Terminal

Do you remember Firely Terminal from our previous blog post? Firely Terminal is our cross-platform Swiss army knife and command-line tool for all kinds of FHIR needs, including validation. Hence, the reason it is mentioned here too. An offline and local tool can be very useful in the rapid validation of your work. It could be incorporated within build or quality assurance processes. With some creativity, Firely Terminal can be scripted for bulk validation usage too. If you aren’t feeling very creative, don’t worry. We will implement this feature natively too.



Another free and cross-platform validator that is worth mentioning is Hammer. Created by one of Firely’s FHIR consultants, it offers a modern and intuitive user interface. One of its major features is that it combines the .NET and JAVA validator. It is currently in an experimental phase so any feedback or contributions are more than welcome.

FHIRPath tester/validator

This is not really a resource validator but it is a very useful tool to validate FHIRPath expressions. A must-have if you are enriching profiles, TestScripts, or Search Parameters with complex FHIR path expressions. The FHIRPath test by Brian Postlethwaite is easily downloadable as a Microsoft app. It is even available on Xbox or HoloLens!
Another FHIRPath tester, maintained by Josh Mandel, can be found on Github.

FHIR path tester for FHIR validation
FHIRPath tester by Brian Postlethwaite

JAVA validator

Last but not least is the JAVA validator. It’s maintained by HL7 and is provided with the FHIR specification. You can get the latest version from the FHIR downloads page. HL7 Confluence documents the use of the validator. The JAVA validator has a broad range of features including bulk validation.

What’s next?

There you have it! We took you through a quick overview of FHIR validation and how important it is for your FHIR project. Hopefully, you feel more equipped with these four different ways to validate your FHIR work on 1) Copy-paste, 2) Snippet, 3) Project, and 4) Bulk validation. Now you know exactly which buttons and features to look out for the next time you work on your FHIR project. If that isn’t enough, you even have an extra list of tools that you can use apart from!

If you’re hungry for more FHIR skills, stay tuned for our third and final blog post about the “Hidden Gems on That Make Your FHIR Work Easier.” Next time we’ll tell you all about version management using and Forge. See you in the next blog post!

Want to stay on top of Interoperability and Health IT? 

Subscribe to our newsletter for the latest news on FHIR. 

Post a comment

Your email address will not be published. Required fields are marked *