In Quality Control, you can choose which validator is used to validate your resources. Simplifier supports multiple validator engines, allowing you to align validation behavior with your needs.
By default, all validation in Simplifier uses the Firely .NET SDK validator. You can override this per validation action by selecting a different validator flavor.
Available validator flavors:
- flavor: firely # Default – Firely .NET SDK validator
- flavor: netsdk # Legacy .NET validator
- flavor: java # HL7 Java validator
Default Rules
Simplifier provides two default rule series: the minimal and the recommended.
Minimal series
The minimal series is a very small set of rules that we know everyone agrees on. The bulk validation rule is included in the minimal series.
Bulk validation is one of the most extensive forms of validation you can think of. So in that respect the mimal series is not small. It is however what the FHIR standard describes that resources should adhere to.
This is a snapshot in time of the QC minimal rules and are subject to change:
# This is the minimal rule series
- action: parse
name: parse-fhir-resources
status: "Checking if all FHIR Resource files can be parsed"
files:
- /**/*.xml
- /**/*.json
- "!package.json"
- name: resource-validation
status: "Validating resources against the FHIR standard and their profiles"
action: validate
category: Resource
suppress:
- 6005
- eld-16
- action: unique
name: unique-canonicals
status: "Checking if all StructureDefinitions have a unique canonical"
category: StructureDefinition
unique: url
- include: manifest
Recommended series
The recommended series is a more opiniated set of rules that we defined, of what we believe a FHIR project should conform to. But we also acknowledge that these are more opiniated, and so we separated them. Here you can think of rules like that every resource should have an id.
This is a snapshot in time of the QC recommended rules and are subject to change:
- include: minimal
- name: no-snapshot
status: "Checking that structure definitions do not have a pre-generated snapshot"
category: StructureDefinition
predicate: snapshot.element.count() = 0
error-message: You should not generate a snapshot in your source. Allow consuming tools to generate the snapshot.
- name: valid-ids
status: Check for valid ids
predicate: id.matches('^[A-Za-z0-9\\-\\.]{1,64}$')
error-message: The resource must have a valid id
- name: valid-names
category: StructureDefinition
predicate: name.contains(' ').not()
error-message: The name of a StructureDefinition should not contain spaces
- name: unique-names
category: Conformance
unique: name