Quality Control Specification

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

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