Correctness Rules
Overview
Section titled “Overview”Correctness rules ensure that your FSH code complies with the FHIR specification and prevent syntax errors, semantic violations, and runtime issues.
correctness/invalid-keyword
Section titled “correctness/invalid-keyword”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
correctness/malformed-alias
Section titled “correctness/malformed-alias”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
correctness/invalid-caret-path
Section titled “correctness/invalid-caret-path”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
correctness/missing-profile-id
Section titled “correctness/missing-profile-id”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
correctness/invalid-identifier
Section titled “correctness/invalid-identifier”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
correctness/cardinality-conflicts
Section titled “correctness/cardinality-conflicts”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
correctness/cardinality-too-restrictive
Section titled “correctness/cardinality-too-restrictive”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
correctness/invalid-slicing
Section titled “correctness/invalid-slicing”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
correctness/invalid-constraint
Section titled “correctness/invalid-constraint”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
correctness/missing-parent-profile
Section titled “correctness/missing-parent-profile”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
correctness/invalid-status
Section titled “correctness/invalid-status”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
correctness/profile-assignment-present
Section titled “correctness/profile-assignment-present”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
correctness/extension-context-missing
Section titled “correctness/extension-context-missing”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
correctness/required-field-override
Section titled “correctness/required-field-override”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
correctness/binding-strength-weakening
Section titled “correctness/binding-strength-weakening”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
correctness/binding-without-valueset
Section titled “correctness/binding-without-valueset”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
correctness/duplicate-rule
Section titled “correctness/duplicate-rule”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
correctness/duplicate-alias
Section titled “correctness/duplicate-alias”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
correctness/slice-name-collision
Section titled “correctness/slice-name-collision”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