Skip to content

Correctness Rules

Correctness rules ensure that your FSH code complies with the FHIR specification and prevent syntax errors, semantic violations, and runtime issues.

Name: Invalid Keyword Severity: 🔴 Error Fixable: Yes Implementation: GritQL

Detects invalid or misspelled FSH keywords like ‘Profil’ instead of ‘Profile’

Tags: correctness, keywords

Configuration:

{
"linter": {
"rules": {
"correctness/invalid-keyword": "error"
}
}
}

Learn more: Invalid Keyword


Name: Malformed Alias Severity: 🔴 Error Fixable: Yes Implementation: GritQL

Detects malformed alias declarations with syntax errors

Tags: correctness, alias

Configuration:

{
"linter": {
"rules": {
"correctness/malformed-alias": "error"
}
}
}

Learn more: Malformed Alias


Name: Invalid Caret Path Severity: 🔴 Error Fixable: No Implementation: AST

Detects invalid caret path syntax in FSH rules (double dots, empty brackets, unbalanced brackets)

Tags: correctness, caret, path

Configuration:

{
"linter": {
"rules": {
"correctness/invalid-caret-path": "error"
}
}
}

Learn more: Invalid Caret Path


Name: Missing Profile ID Severity: 🔴 Error Fixable: No Implementation: GritQL

Detects profile declarations without proper identifiers

Tags: correctness, profile, id

Configuration:

{
"linter": {
"rules": {
"correctness/missing-profile-id": "error"
}
}
}

Learn more: Missing Profile ID


Name: Invalid Identifier Severity: 🔴 Error Fixable: Yes Implementation: GritQL

Detects invalid identifier syntax in FSH files

Tags: correctness, identifier

Configuration:

{
"linter": {
"rules": {
"correctness/invalid-identifier": "error"
}
}
}

Learn more: Invalid Identifier


Name: Cardinality Conflicts Severity: 🟡 Warning Fixable: No Implementation: AST

Detects cardinality constraints that are suspicious or likely to conflict with parent FHIR element definitions

Tags: correctness, cardinality, constraints, fhir

Configuration:

{
"linter": {
"rules": {
"correctness/cardinality-conflicts": "warn"
}
}
}

Learn more: Cardinality Conflicts


Name: Cardinality Too Restrictive Severity: 🟡 Warning Fixable: No Implementation: AST

Warns about cardinality changes that significantly restrict element usage, such as making optional elements required or reducing maximum cardinality

Tags: correctness, cardinality, constraints, interoperability

Configuration:

{
"linter": {
"rules": {
"correctness/cardinality-too-restrictive": "warn"
}
}
}

Learn more: Cardinality Too Restrictive


Name: Invalid Slicing Severity: 🔴 Error Fixable: No Implementation: GritQL

Detects invalid slicing rule syntax and semantic issues

Tags: correctness, slicing

Configuration:

{
"linter": {
"rules": {
"correctness/invalid-slicing": "error"
}
}
}

Learn more: Invalid Slicing


Name: Invalid Constraint Severity: 🔴 Error Fixable: No Implementation: GritQL

Detects invalid constraint expressions and FHIRPath syntax

Tags: correctness, constraint, fhirpath

Configuration:

{
"linter": {
"rules": {
"correctness/invalid-constraint": "error"
}
}
}

Learn more: Invalid Constraint


Name: Missing Parent Profile Severity: 🟡 Warning Fixable: Yes Implementation: GritQL

Detects profiles without explicit parent profile declarations

Tags: correctness, profile, parent

Configuration:

{
"linter": {
"rules": {
"correctness/missing-parent-profile": "warn"
}
}
}

Learn more: Missing Parent Profile


Name: Invalid Status Severity: 🔴 Error Fixable: Yes Implementation: GritQL

Detects invalid status values in FHIR resource metadata

Tags: correctness, metadata, status

Configuration:

{
"linter": {
"rules": {
"correctness/invalid-status": "error"
}
}
}

Learn more: Invalid Status


Name: Profile Assignment Present Severity: 🟡 Warning Fixable: No Implementation: AST

Ensures that profiles have ^status and ^abstract assignments, and Parent declarations

Tags: correctness, profile, metadata

Configuration:

{
"linter": {
"rules": {
"correctness/profile-assignment-present": "warn"
}
}
}

Learn more: Profile Assignment Present


Name: Extension Context Missing Severity: 🔴 Error Fixable: No Implementation: AST

Ensures that extensions have ^context specifications indicating where they can be applied

Tags: correctness, extension, context

Configuration:

{
"linter": {
"rules": {
"correctness/extension-context-missing": "error"
}
}
}

Learn more: Extension Context Missing


correctness/instance-required-fields-missing

Section titled “correctness/instance-required-fields-missing”

Name: Instance Required Fields Missing Severity: 🔴 Error Fixable: No Implementation: AST

Ensures that instance examples satisfy cardinality requirements (min >= 1) defined in their profiles

Tags: correctness, instance, required-fields, validation

Configuration:

{
"linter": {
"rules": {
"correctness/instance-required-fields-missing": "error"
}
}
}

Learn more: Instance Required Fields Missing


Name: Required Field Override Severity: 🔴 Error Fixable: No Implementation: AST

Validates that child profiles do not weaken parent cardinality constraints by making required fields (min >= 1) optional (min = 0)

Tags: correctness, cardinality, inheritance, validation

Configuration:

{
"linter": {
"rules": {
"correctness/required-field-override": "error"
}
}
}

Learn more: Required Field Override


Name: Binding Strength Weakening Severity: 🔴 Error Fixable: No Implementation: AST

Prevents child profiles from using weaker binding strengths than their parent profiles (e.g., parent required, child preferred is invalid)

Tags: correctness, binding, terminology, semantic

Configuration:

{
"linter": {
"rules": {
"correctness/binding-strength-weakening": "error"
}
}
}

Learn more: Binding Strength Weakening


Name: Binding Without ValueSet Severity: 🟡 Warning Fixable: No Implementation: AST

Warns when bindings reference ValueSets that are not defined in the project, FHIR specification, or imported packages

Tags: correctness, binding, terminology, references

Configuration:

{
"linter": {
"rules": {
"correctness/binding-without-valueset": "warn"
}
}
}

Learn more: Binding Without ValueSet


Name: Conflicting Rules Severity: 🔴 Error Fixable: No Implementation: AST

Detects when the same element path has multiple conflicting rules (cardinality, type, binding)

Tags: correctness, rules, conflicts

Configuration:

{
"linter": {
"rules": {
"correctness/duplicate-rule": "error"
}
}
}

Learn more: Conflicting Rules


Name: Duplicate Alias Severity: 🔴 Error Fixable: No Implementation: AST

Detects aliases with the same name but different values, which causes conflicts

Tags: correctness, alias, duplicates

Configuration:

{
"linter": {
"rules": {
"correctness/duplicate-alias": "error"
}
}
}

Learn more: Duplicate Alias


Name: Slice Name Collision Severity: 🟡 Warning Fixable: No Implementation: AST

Warns when slice names may collide with common FHIR element names

Tags: correctness, slicing, naming

Configuration:

{
"linter": {
"rules": {
"correctness/slice-name-collision": "warn"
}
}
}

Learn more: Slice Name Collision