FHIR Query Validator applies a set of structured validation rules to every query string. Understanding these rules helps you interpret error messages and write queries that pass validation. Rules are applied in order — a resource type error will prevent parameter validation from running.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/dhanyasukumaran1/fhir_query_validator/llms.txt
Use this file to discover all available pages before exploring further.
Validation order
Parse the query string
The query is split into resource type and parameter pairs. Malformed query strings (missing
?, invalid encoding) are caught here.Validate the resource type
The resource type portion (before
?) is checked against the list of known FHIR R4 resource types.Validate search parameter names
Each parameter name is checked against the list of valid search parameters for that resource type.
Resource type rules
| Rule | Description | Error message |
|---|---|---|
| Must be a known FHIR R4 resource | The resource type must appear in the FHIR R4 specification | Unknown FHIR resource type '{type}' |
| Case-sensitive | patient is not valid — use Patient | Unknown FHIR resource type 'patient'. Did you mean 'Patient'? |
| No whitespace | Spaces in the resource type are not allowed | Invalid resource type: contains whitespace |
Search parameter rules
| Rule | Description | Error message |
|---|---|---|
| Must exist for resource | A parameter must be defined for the queried resource type | Unknown search parameter '{param}' for resource '{resource}' |
| Case-sensitive | Parameter names are lowercase by convention | Unknown search parameter '{Param}'. Did you mean '{param}'? |
| Modifiers must be valid for type | Only applicable modifiers are allowed per parameter type | Modifier ':{modifier}' is not valid for parameter type '{type}' |
Value format rules by parameter type
String parameters
String parameters
String parameters accept free-text values. No specific format is required, but some modifiers alter behavior.Valid modifiers:
:exact, :contains, :missingToken parameters
Token parameters
Token parameters match coded values. They accept Error:
system|code, code, or |code formats.Valid modifiers: :not, :text, :above, :below, :in, :not-in, :missing, :of-typeInvalid token format '{value}'. Use 'code', 'system|code', or '|code'Date parameters
Date parameters
Date parameters require ISO 8601 date or datetime format. Comparison prefixes are supported.Valid prefixes: Error:
eq, ne, lt, le, gt, ge, sa, eb, apValid formats: YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DDThh:mm:ss+zz:zzInvalid date format '{value}'. Use ISO 8601 format (YYYY-MM-DD or YYYY-MM-DDThh:mm:ss+zz:zz)Number parameters
Number parameters
Number parameters accept integers or decimals. Comparison prefixes are supported.Valid prefixes: Error:
eq, ne, lt, le, gt, ge, sa, eb, apInvalid number format '{value}'. Use a numeric value with optional prefix (eq, ne, lt, le, gt, ge)Quantity parameters
Quantity parameters
Quantity parameters combine a number with optional unit system and code: Error:
number|system|code.Valid prefixes: eq, ne, lt, le, gt, ge, sa, eb, apInvalid quantity format '{value}'. Use 'number', 'number|system|code', or 'prefix+number'Reference parameters
Reference parameters
Reference parameters point to another FHIR resource. They accept a relative reference, absolute URL, or logical identifier.Valid modifiers:
:type, :identifier, :missing, :above, :belowURI parameters
URI parameters
URI parameters match exact URIs. The
:above and :below modifiers enable hierarchical matching.Composite parameters
Composite parameters
Composite parameters combine two parameters using Error:
$ as a separator.Invalid composite format '{value}'. Use 'param1$param2' syntaxModifier validity by parameter type
| Modifier | String | Token | Date | Number | Quantity | Reference | URI |
|---|---|---|---|---|---|---|---|
:exact | Yes | — | — | — | — | — | — |
:contains | Yes | — | — | — | — | — | — |
:missing | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
:not | — | Yes | — | — | — | — | — |
:text | — | Yes | — | — | — | — | — |
:above | — | Yes | — | — | — | Yes | Yes |
:below | — | Yes | — | — | — | Yes | Yes |
:in | — | Yes | — | — | — | — | — |
:not-in | — | Yes | — | — | — | — | — |
:identifier | — | — | — | — | — | Yes | — |
:type | — | — | — | — | — | Yes | — |
:of-type | — | Yes | — | — | — | — | — |
Special parameter rules
| Parameter | Valid values | Notes |
|---|---|---|
_count | Positive integer | Maximum number of results per page |
_sort | Parameter name, optionally prefixed with - for descending | e.g., _sort=birthdate, _sort=-date |
_summary | true, false, text, data, count | Controls response verbosity |
_format | json, xml, application/fhir+json, application/fhir+xml | Response format |
_include | ResourceType:searchParam or ResourceType:searchParam:targetType | Include referenced resources |
_revinclude | ResourceType:searchParam | Include resources that reference the result |
_elements | Comma-separated element names | Return only specified elements |
Validation rules follow the HL7 FHIR R4 specification. Custom resource types or extended profiles may require custom configuration to avoid false validation errors.