Error guide & FAQ
Plain-language explanations of the messages the FHIR validator produces, grouped by category. The same explanations appear on each issue in your validation results.
96 entries
Cardinality could not be fully checked Missing or repeated elements
- What it means
- The validator found matching entries but could not verify the min/max because the slicing rules are not machine-checkable.
- Why
- This is usually a profile limitation, not your mistake.
- How to fix
- Review the element manually against the profile page; no change is needed if it matches.
Validator message IDs: Validation_VAL_Profile_NoCheckMax Validation_VAL_Profile_NoCheckMin
Element required by a fixed value is missing Missing or repeated elements
- What it means
- The profile fixes the element to a specific value, but the element is absent.
- Why
- The profile requires an exact value so that consumers can identify this kind of data.
- How to fix
- Add the reported location with the exact value stated in the message.
Validator message IDs: Profile_VAL_MissingElement
Required element is missing Missing or repeated elements
- What it means
- The profile says the element must appear a minimum number of times, and your resource has fewer (often zero).
- Why
- NP Core marks this element as mandatory so every receiving system can rely on it being present.
- How to fix
- Add the element at the reported location. If the message mentions a slice, add an entry that matches that slice (for example an identifier with the right
system). Check the profile page for the exact rule.
{ "identifier": [ { "system": "http://example.org/id", "value": "12345" } ] }
Validator message IDs: Validation_VAL_Profile_Minimum Validation_VAL_Profile_Minimum_SLICE Validation_VAL_Profile_Minimum_SLICE_EXT
Too many repetitions of an element Missing or repeated elements
- What it means
- the element appears more times than the profile allows.
- Why
- The profile limits how many values the element may have; receivers may reject or ignore extras.
- How to fix
- Remove the extra entries at the reported location, or merge them. If it is an array, keep only the allowed number.
Validator message IDs: Validation_VAL_Profile_Maximum
Value (or data-absent-reason) required Missing or repeated elements
- What it means
- The element has no value. FHIR needs either a value or a child extension explaining its absence.
- Why
- A bare empty element carries no information.
- How to fix
- Add the value, or add a
data-absent-reasonextension if the data is unknown.
Validator message IDs: PRIMITIVE_MUSTHAVEVALUE_MESSAGE PRIMITIVE_VALUE_ALTERNATIVES_MESSAGE Type_Specific_Checks_DT_Primitive_ValueExt
Example URL used as a system Identifiers
- What it means
- An
example.org(or similar example) URL was used. Example URLs are rejected outside of documentation. - Why
- A placeholder system means the identifier cannot be traced to a real issuing authority.
- How to fix
- Replace it with the real system. For identifiers NP Core defines the system (National ID, NHFR, NHWR...); for your own internal identifiers use a URL under a domain your organisation controls.
{ "system": "http://nhfr.digitalhealth.gov.np/<your-facility-nhfr-code>", "value": "ENC-0001" }
Validator message IDs: TYPE_SPECIFIC_CHECKS_DT_URL_EXAMPLE
Identifier.system must be an absolute URI Identifiers
- What it means
systemis a local or relative value such asNIDor/ids.- Why
- System URIs make identifiers globally unambiguous.
- How to fix
- Use the full URI of the issuing authority from NP Core (for example the National ID or NHFR system).
{ "system": "http://nhfr.digitalhealth.gov.np", "value": "1-1-001-0001" }
Validator message IDs: Type_Specific_Checks_DT_Identifier_System
A code is required but none was provided Codes & terminology
- What it means
- the element is bound to a value set but contains no code (only free text, or an empty coding).
- Why
- Free text cannot be aggregated or exchanged reliably.
- How to fix
- Add a coding with
systemandcodefrom the bound value set. You can keeptextas well.
"code": { "coding": [ { "system": "...", "code": "..." } ], "text": "Free text" }
Validator message IDs: Terminology_TX_Binding_Missing Terminology_TX_Binding_Missing2 Terminology_TX_Code_ValueSet Terminology_TX_Code_ValueSetMax Terminology_TX_Code_ValueSet_Ext Terminology_TX_Code_ValueSet_MISSING Terminology_TX_Code_ValueSet_XVER_SOURCE
Code could not be checked Codes & terminology
- What it means
- The validator has no terminology data to check this code or binding.
- Why
- The code is not necessarily wrong; the check was skipped.
- How to fix
- Make sure the code system is a standard one (SNOMED CT, LOINC, ICD-11) or an NP Core code system, and that the code is spelled correctly.
Validator message IDs: Error_expanding_ValueSet_running_without_terminology_services Error_validating_code_running_without_terminology_services Terminology_TX_Binding_CantCheck Terminology_TX_Binding_NoServer Terminology_TX_Binding_NoSource Terminology_TX_NoValid_15
Code has wrong case or form Codes & terminology
- What it means
- The code is valid except for letter case or its normal form.
- Why
- Codes are case-sensitive in FHIR.
- How to fix
- Use the code exactly as published in the code system.
Validator message IDs: CODE_CASE_DIFFERENCE CODE_NOT_IN_NORMAL_FORM
Code is not a valid value for this required binding Codes & terminology
- What it means
- The element is bound to a small, fixed list of codes and the value you sent is not on it, so the validator could not even tell which code system it belongs to.
- Why
- Required bindings accept only the listed codes, spelled exactly (lower case, hyphens as published).
- How to fix
- Open the value set named in the companion message and send one of its codes exactly. Example: Encounter.status uses
planned,arrived,in-progress,finished... (notdone).
"status": "finished"
Validator message IDs: UNABLE_TO_INFER_CODESYSTEM
Code is not in the recommended value set Codes & terminology
- What it means
- None of the codings in this CodeableConcept belong to the value set bound to the element. The binding is only extensible/preferred, so this is a warning or note, not an error.
- Why
- Extensible means: use a code from the value set when one fits; another code is allowed only if no suitable one exists.
- How to fix
- If a suitable code exists in the named value set, use it. Otherwise keep your code and add
text.
Validator message IDs: Terminology_TX_NoValid_1 Terminology_TX_NoValid_2_CC Terminology_TX_NoValid_3_CC Terminology_TX_NoValid_4_CC Terminology_TX_NoValid_5_CC Terminology_TX_NoValid_6_CC
Code is not in the required value set Codes & terminology
- What it means
- The code at the reported location is not a member of the value set bound to this element.
- Why
- Value sets guarantee all systems use the same vocabulary so data can be compared and reported nationally.
- How to fix
- Pick a code from the bound value set (the message names it, and the IG page lists its codes). Make sure
systemandcodebelong together.
"code": { "coding": [ { "system": "<code system URL>", "code": "<code from the value set>", "display": "<its display>" } ] }
Validator message IDs: Terminology_TX_Confirm_4a Terminology_TX_Confirm_5 Terminology_TX_Confirm_6 Terminology_TX_NoValid_12 Terminology_TX_NoValid_13 Terminology_TX_NoValid_14 Terminology_TX_NoValid_16 Terminology_TX_NoValid_17 Terminology_TX_NoValid_18 Terminology_TX_NoValid_1_CC Terminology_TX_NoValid_2 Terminology_TX_NoValid_3 Terminology_TX_NoValid_4 Terminology_TX_NoValid_5 Terminology_TX_NoValid_6
Code system version required Codes & terminology
- What it means
- This code system requires a
versionon the coding. - Why
- Code meaning can change between versions.
- How to fix
- Add
versionto the Coding.
Validator message IDs: CODESYSTEM_VERSION_NEEDED
Coding has no system Codes & terminology
- What it means
- A code without a system URL has no defined meaning.
- Why
- Receivers cannot know which vocabulary the code belongs to.
- How to fix
- Add
systemnext tocode. If you only have text, use CodeableConcept.text.
{ "system": "http://loinc.org", "code": "8867-4" }
Validator message IDs: Coding_has_no_system__cannot_validate Coding_has_no_system_or_code__cannot_validate
Could not confirm codes are in the value set Codes & terminology
- What it means
- None of the codings in this CodeableConcept could be confirmed as members of the bound value set (or the maximum value set).
- Why
- At least one coding must come from the bound value set for the data to be comparable.
- How to fix
- Add a coding from the value set. Keep local codes only as additional codings next to it.
Validator message IDs: Terminology_TX_Confirm_1_CC Terminology_TX_Confirm_2_CC Terminology_TX_Confirm_3_CC Terminology_TX_NoValid_10 Terminology_TX_NoValid_11 Terminology_TX_NoValid_7 Terminology_TX_NoValid_8 Terminology_TX_NoValid_9
Display text does not match the code Codes & terminology
- What it means
displayis not the official display name for that code.- Why
- A mismatching display suggests the wrong code was picked.
- How to fix
- Copy the display from the code system, or omit
display(it is optional). Verify the code is the one you intended.
Validator message IDs: Display_Name_Not_Fixed_use_Supplement Display_Name_WS_for__should_be_one_of__instead_of Display_Name_for__should_be_one_of__instead_of NO_VALID_DISPLAY_AT_ALL NO_VALID_DISPLAY_FOUND NO_VALID_DISPLAY_FOUND_LANG_NONE NO_VALID_DISPLAY_FOUND_LANG_SOME NO_VALID_DISPLAY_FOUND_NONE_FOR_LANG_ERR Terminology_TX_Display_Wrong
Error validating coding Codes & terminology
- What it means
- The terminology check failed with an error (see the detail).
- Why
- The code could not be confirmed as valid.
- How to fix
- Check system URL, code and version for typos.
Validator message IDs: Terminology_PassThrough_TX_Message Terminology_TX_Error_CodeableConcept Terminology_TX_Error_CodeableConcept_Max Terminology_TX_Error_Coding1 Terminology_TX_Error_Coding2
Invalid Coding.system Codes & terminology
- What it means
systemmust be an absolute URI of a code system, not a relative path or a ValueSet URL.- Why
- System URIs are the global names of vocabularies.
- How to fix
- Use the full code system URL, for example
http://loinc.orgorhttp://snomed.info/sct.
Validator message IDs: Terminology_TX_System_Invalid Terminology_TX_System_Relative Terminology_TX_System_ValueSet Terminology_TX_System_ValueSet2
Supplement used as a system Codes & terminology
- What it means
- Code system supplements cannot be used in Coding.system.
- Why
- Supplements only add information.
- How to fix
- Use the base code system URL.
Validator message IDs: CODESYSTEM_CS_NO_SUPPLEMENT
Unknown code or code system Codes & terminology
- What it means
- The code system URL or the code is not known to the validator.
- Why
- A wrong system URL makes the code meaningless to receivers.
- How to fix
- Check the
systemURL character by character (no trailing slash or typo) and that thecodeexists in that system. Use the NP Core code system URLs from the IG.
{ "system": "http://loinc.org", "code": "8302-2", "display": "Body height" }
Validator message IDs: Terminology_TX_System_Unknown Unknown_Code_in Unknown_Code_in_Version Unknown_Code_in_Version_SCT
Value set not found Codes & terminology
- What it means
- The value set referenced by the profile or resource is not available.
- Why
- The binding cannot be checked.
- How to fix
- If this is in your own resource, check the URL. If it is in a profile, report it to the sandbox team.
Validator message IDs: Reference__refers_to_a__not_a_ValueSet Terminology_TX_ValueSet_NotFound Terminology_TX_ValueSet_NotFound_CS Unable_to_resolve_value_Set_
Wrong number of codings Codes & terminology
- What it means
- The number of codings differs from what the profile requires.
- Why
- The profile fixes the coding list.
- How to fix
- Provide exactly the codings the profile requires.
Validator message IDs: Terminology_TX_Binding_Missing3 Terminology_TX_Coding_Count
Contained resource problem References
- What it means
- A contained resource is unreferenced, duplicated, or not a FHIR resource.
- Why
- Contained resources must be used and uniquely identified.
- How to fix
- Reference it as
#idfrom the parent, or remove it.
"contained": [ { "resourceType": "Medication", "id": "m1" } ], "medicationReference": { "reference": "#m1" }
Validator message IDs: CONTAINED_ORPHAN_DOM3 Contained_resource_does_not_appear_to_be_a_FHIR_resource_unknown_name_ RESOURCE_DUPLICATE_CONTAINED_ID
Malformed reference References
- What it means
referenceis not a valid relative or absolute URL.- Why
- Receivers resolve references literally.
- How to fix
- Use
ResourceType/id(no spaces, no extra path) or an absolute URL.
"reference": "Patient/pat-0001"
Validator message IDs: REFERENCE_REF_INVALID_REF REFERENCE_REF_QUERY_INVALID REFERENCE_REF_SUSPICIOUS Reference_REF_Format1 Reference_REF_Format2
Reference cannot be resolved References
- What it means
- The reference at the reported location points to a resource the validator could not find.
- Why
- A dangling reference leaves the record incomplete.
- How to fix
- Include the target resource (in the same Bundle with a matching
fullUrl, or contained), or make sure the reference isType/idof an existing resource.
"subject": { "reference": "Patient/pat-0001" }
Validator message IDs: Reference_REF_CantResolve Unable_to_resolve_reference_to_ reference_to__cannot_be_resolved
Reference matches several Bundle entries References
- What it means
- More than one entry matches the reference.
- Why
- Ambiguous references cannot be resolved safely.
- How to fix
- Give each entry a unique
fullUrl.
Validator message IDs: BUNDLE_BUNDLE_ENTRY_FOUND_MULTIPLE BUNDLE_BUNDLE_ENTRY_FOUND_MULTIPLE_FRAGMENT Bundle_BUNDLE_MultipleMatches
Reference points to the wrong resource type References
- What it means
- The reference at the reported location targets a resource type (or profile) that the element does not allow.
- Why
- Profiles restrict targets so data forms the intended model (for example a performer must be a Practitioner).
- How to fix
- Reference a resource of an allowed type listed in the message.
"performer": [ { "reference": "Practitioner/prac-01" } ]
Validator message IDs: Bundle_BUNDLE_Entry_Type2 REFERENCE_REF_WRONGTARGET_LOAD Reference_REF_BadTargetType Reference_REF_BadTargetType2 Reference_REF_ResourceType Reference_REF_WrongTarget
Reference type unknown or display missing References
- What it means
- The target type can't be determined, or the reference carries neither a link nor an identifier.
- Why
- An empty reference tells receivers nothing.
- How to fix
- Provide
reference(preferred) oridentifier, optionallydisplay.
Validator message IDs: Reference_REF_Aggregation Reference_REF_NoDisplay Reference_REF_NoType
Referenced entry not found in the Bundle References
- What it means
- A reference inside the Bundle does not match any entry's
fullUrl. - Why
- References in a Bundle are resolved by fullUrl, not by id alone.
- How to fix
- Make
referenceequal the target entry'sfullUrl(e.g.urn:uuid:...), or include the target entry.
{ "fullUrl": "urn:uuid:11111111-...", "resource": { "resourceType": "Patient" } }
... "subject": { "reference": "urn:uuid:11111111-..." }
Validator message IDs: BUNDLE_BUNDLE_ENTRY_NOTFOUND_APPARENT BUNDLE_BUNDLE_ENTRY_NOTFOUND_CANNOT BUNDLE_BUNDLE_ENTRY_NOTFOUND_FRAGMENT BUNDLE_BUNDLE_POSSIBLE_MATCH_NO_FU BUNDLE_BUNDLE_POSSIBLE_MATCH_WRONG_FU BUNDLE_POSSSIBLE_MATCHES Bundle_BUNDLE_Entry_NotFound Reference_REF_NotFound_Bundle
Relative reference cannot be resolved References
- What it means
- A relative or conditional reference cannot be resolved in this context.
- Why
- Needs a fullUrl or a transaction.
- How to fix
- Add
fullUrlto every Bundle entry, and use conditional references only in transaction bundles.
Validator message IDs: Bundle_BUNDLE_FullUrl_Missing REFERENCE_REF_QUERY_NOT_TRANSACTION REFERENCE_REF_REL_UNSOLVEABLE
urn reference not in Bundle References
- What it means
- A
urn:reference points outside this Bundle. - Why
- urn references only work within the same Bundle.
- How to fix
- Include the target entry in the Bundle.
Validator message IDs: Bundle_BUNDLE_Not_Local
Boolean must be true or false Data formats
- What it means
- Booleans must be real JSON booleans.
- Why
- Strings like "true", "yes" or 1 are not accepted.
- How to fix
- Send
trueorfalsewithout quotes.
"active": true
Validator message IDs: Error_parsing_JSON_the_primitive_value_must_be_a_boolean Type_Specific_Checks_DT_Boolean_Value
Content cannot be parsed Data formats
- What it means
- The content is not a recognisable FHIR resource or contains illegal characters.
- Why
- The parser rejected it.
- How to fix
- Send FHIR R4 JSON or XML, UTF-8 encoded.
Validator message IDs: No_processing_instructions_allowed_in_resources This_does_not_appear_to_be_a_FHIR_resource_unknown_namespacename_ UNICODE_XML_BAD_CHARS
Date outside reasonable range Data formats
- What it means
- The year is far in the past or future, often caused by a BS year (for example 2081) sent as an AD year.
- Why
- Bikram Sambat is about 56 years ahead of AD; BS years look like future dates.
- How to fix
- Convert BS to AD before sending.
"birthDate": "1985-07-02" // not 2042-03-18 (BS)
Validator message IDs: Type_Specific_Checks_DT_DateTime_Reasonable
Empty or whitespace-only value Data formats
- What it means
- The value is empty or only spaces.
- Why
- Empty strings are invalid in FHIR.
- How to fix
- Omit the element when there is nothing to say.
Validator message IDs: Type_Specific_Checks_DT_Code_WS Type_Specific_Checks_DT_Primitive_NotEmpty Type_Specific_Checks_DT_Primitive_WS_OTHER Type_Specific_Checks_DT_Primitive_WS_XML Type_Specific_Checks_DT_String_WS_ALL
Invalid base64 Data formats
- What it means
- The value is not valid base64.
- Why
- Binary data must be base64 encoded.
- How to fix
- Encode with standard base64 (no line breaks or data: prefix).
Validator message IDs: Type_Specific_Checks_DT_Base64_Valid
Invalid date or time format Data formats
- What it means
- The value at the reported location is not a valid FHIR date/dateTime/instant.
- Why
- FHIR only accepts ISO 8601 in the Gregorian calendar; other formats cannot be parsed by receivers.
- How to fix
- Use
YYYY,YYYY-MM,YYYY-MM-DDfor dates andYYYY-MM-DDThh:mm:ss+05:45for date-times. Convert Bikram Sambat (BS) dates to AD before sending; keep the BS date in the NP Core BS date extension if the IG offers one.
"birthDate": "1990-04-14" "recorded": "2025-01-20T09:30:00+05:45"
Validator message IDs: Type_Specific_Checks_DT_DateTime_Regex Type_Specific_Checks_DT_DateTime_Valid Type_Specific_Checks_DT_Date_Valid Type_Specific_Checks_DT_Instant_Valid
Invalid id Data formats
- What it means
- Ids may only contain letters, digits,
-and., up to 64 characters. - Why
- Servers cannot store other ids.
- How to fix
- Use something like a UUID or your internal key without spaces or slashes.
"id": "pat-0001"
Validator message IDs: Resource_RES_ID_Malformed_Chars Resource_RES_ID_Malformed_Length Type_Specific_Checks_DT_ID_Valid
Invalid narrative HTML Data formats
- What it means
- The
text.divnarrative uses HTML elements or attributes that FHIR does not allow (script, style, forms, onclick etc.). - Why
- Narratives are shown to clinicians and must be safe and renderable.
- How to fix
- Keep to basic XHTML: div, p, span, table, ul, ol, li, b, i, br, a, img. Remove scripts, styles and event attributes.
"text": { "status": "generated", "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Patient Ram Sharma</div>" }
Validator message IDs: XHTML_XHTML_Attribute_Illegal XHTML_XHTML_BAD_ELEMENT_TYPE XHTML_XHTML_BLOCK_IN_PARA XHTML_XHTML_ELEMENT_ILLEGAL_IN_PARA XHTML_XHTML_Element_Illegal XHTML_XHTML_Entity_Illegal XHTML_XHTML_ILLEGAL_CHILDREN XHTML_XHTML_Image_Reference_Illegal XHTML_XHTML_NO_CHILDREN XHTML_XHTML_NO_RECURSION XHTML_XHTML_OUT_OF_PLACE
Invalid number Data formats
- What it means
- The value is not a valid number or is outside the permitted range.
- Why
- Numbers must be real JSON numbers within the limits of the data type.
- How to fix
- Send a plain number (no quotes, no thousands separators, dot as decimal mark). Check minimum/maximum from the profile.
"valueQuantity": { "value": 72.5 }
Validator message IDs: Error_parsing_JSON_the_primitive_value_must_be_a_number Type_Specific_Checks_DT_Decimal_GT Type_Specific_Checks_DT_Decimal_LT Type_Specific_Checks_DT_Decimal_Range Type_Specific_Checks_DT_Decimal_Valid Type_Specific_Checks_DT_Integer64_Valid Type_Specific_Checks_DT_Integer_GT Type_Specific_Checks_DT_Integer_LT Type_Specific_Checks_DT_Integer_LT0 Type_Specific_Checks_DT_Integer_LT1 Type_Specific_Checks_DT_Integer_Valid
Invalid time Data formats
- What it means
- The time is not
hh:mm:ss. - Why
- Receivers cannot parse it.
- How to fix
- Use 24-hour
hh:mm:ss.
"09:30:00"
Validator message IDs: Type_Specific_Checks_DT_Time_Valid Type_Specific_Checks_DT_Time_Valid_Cause
Invalid URI, OID or UUID Data formats
- What it means
- OIDs start with
urn:oid:, UUIDs withurn:uuid:and must be lowercase; URIs contain no spaces. - Why
- Receivers parse these strictly.
- How to fix
- Fix the prefix/case, for example
urn:uuid:3f2b8c1e-5a3d-4f0e-9e57-2b1c8d6a7e10.
Validator message IDs: Type_Specific_Checks_DT_OID_Start Type_Specific_Checks_DT_OID_Valid Type_Specific_Checks_DT_URI_OID Type_Specific_Checks_DT_URI_UUID Type_Specific_Checks_DT_URI_WS Type_Specific_Checks_DT_UUID_Strat Type_Specific_Checks_DT_UUID_Valid
Leading or trailing whitespace Data formats
- What it means
- The string starts or ends with a space.
- Why
- Whitespace breaks exact matching.
- How to fix
- Trim the value.
Validator message IDs: Type_Specific_Checks_DT_String_WS
Malformed JSON Data formats
- What it means
- The body is not valid JSON (trailing comma, missing quote, comment, duplicate key...).
- Why
- Nothing can be validated until it parses.
- How to fix
- Run it through a JSON linter; common causes are trailing commas, single quotes and comments.
Validator message IDs: DUPLICATE_JSON_PROPERTY_KEY Error_parsing_ Error_parsing_JSON_ JSON_COMMA_EXTRA JSON_COMMA_MISSING JSON_COMMENTS_NOT_ALLOWED JSON_PROPERTY_NO_QUOTES JSON_PROPERTY_VALUE_NO_QUOTES
Narrative language mismatch Data formats
- What it means
- Resource.language and the narrative's lang attribute disagree or one is missing.
- Why
- Screen readers and translators use it.
- How to fix
- Add matching
langandxml:langto the div.
Validator message IDs: Language_XHTML_Lang_Different1 Language_XHTML_Lang_Different2 Language_XHTML_Lang_Missing1 Language_XHTML_Lang_Missing2 Language_XHTML_Lang_Missing3
Narrative language/source control Data formats
- What it means
- A narrative-control rule from the profile was not met.
- Why
- Profiles may require labelled narrative sections.
- How to fix
- Follow the rule in the message.
Validator message IDs: NARRATIVE_NOT_TRANSLATED XHTML_CONTROL_LANGS_REQUIRED XHTML_CONTROL_NO_LANGS XHTML_CONTROL_NO_SOURCE XHTML_XHTML_MIXED_LANG
Narrative root must be an XHTML div Data formats
- What it means
text.divmust be well-formed XHTML whose root isdivin the XHTML namespace.- Why
- Otherwise it cannot be rendered.
- How to fix
- Start with
<div xmlns="http://www.w3.org/1999/xhtml">and close all tags.
Validator message IDs: Error_parsing_XHTML_ XHTML_XHTML_DOCTYPE_ILLEGAL XHTML_XHTML_NS_InValid XHTML_XHTML_Name_Invalid
null is not allowed Data formats
- What it means
- the element is set to null.
- Why
- FHIR JSON has no null values (except placeholders in primitive arrays).
- How to fix
- Remove the property when you have no value; configure your JSON serializer to skip nulls.
Validator message IDs: ELEMENT_CANNOT_BE_NULL
Problem with link or id in narrative Data formats
- What it means
- A link, image or id inside the narrative is invalid or duplicated.
- Why
- Broken links are unsafe and confusing.
- How to fix
- Fix or remove the link/id.
Validator message IDs: Type_Specific_Checks_DT_XHTML_Resolve Type_Specific_Checks_DT_XHTML_Resolve_Img XHTML_URL_DATA_DATA_INVALID XHTML_URL_DATA_DATA_INVALID_COMMA XHTML_URL_DATA_MIMETYPE XHTML_URL_DATA_NO_DATA XHTML_URL_EMPTY XHTML_URL_INVALID XHTML_URL_INVALID_CHARS XHTML_XHTML_DUPLICATE_IDS
String expected Data formats
- What it means
- A number or boolean was sent where a string is required.
- Why
- JSON types must match FHIR types.
- How to fix
- Wrap the value in quotes.
Validator message IDs: Error_parsing_JSON_the_primitive_value_must_be_a_string
Time without timezone Data formats
- What it means
- A date-time that includes a time must include a timezone.
- Why
- Without it the moment in time is ambiguous.
- How to fix
- Append the offset: Nepal is
+05:45, or useZfor UTC.
"effectiveDateTime": "2025-01-20T09:30:00+05:45"
Validator message IDs: Type_Specific_Checks_DT_DateTime_TZ
URL could not be resolved Data formats
- What it means
- No definition was found for this URL value.
- Why
- Often a misspelt canonical URL.
- How to fix
- Check the URL, or ignore if it points to an external resource that is not part of FHIR.
Validator message IDs: Type_Specific_Checks_DT_URL_Resolve
Value does not match the required pattern Data formats
- What it means
- The value at the reported location does not match the pattern defined for this data type or profile.
- Why
- Pattern violations make data unparseable or ambiguous.
- How to fix
- Check the message for the expected pattern and fix the value (no leading/trailing spaces, right characters).
Validator message IDs: Type_Specific_Checks_DT_Primitive_Regex Type_Specific_Checks_DT_Primitive_Regex_Type
Value too long or too short Data formats
- What it means
- The text length violates the limit.
- Why
- Limits protect receivers.
- How to fix
- Shorten (or lengthen) the value as the message says.
Validator message IDs: PRIMITIVE_TOO_SHORT Type_Specific_Checks_DT_Primitive_Length Type_Specific_Checks_DT_String_Length
Additional FHIR rule applies (vital signs) Profile rules
- What it means
- FHIR requires resources carrying this LOINC code (for example blood pressure 85354-9) to also satisfy a base vital-signs profile. The validator is telling you it checked that too.
- Why
- Informational; the extra check passes unless a separate error is shown.
- How to fix
- No action unless another error refers to the vital-signs profile.
Validator message IDs: VALIDATION_VAL_PROFILE_SIGNPOST VALIDATION_VAL_PROFILE_SIGNPOST_BPCODE VALIDATION_VAL_PROFILE_SIGNPOST_OBS
Bundle entry matches no allowed profile Profile rules
- What it means
- The entry did not conform to any allowed profile for its type.
- Why
- Bundles can restrict entries to NP Core profiles.
- How to fix
- Read the nested reason and fix the entry to meet the relevant NP Core profile.
Validator message IDs: BUNDLE_BUNDLE_ENTRY_MULTIPLE_PROFILES_MULTIPLE_MATCHES BUNDLE_BUNDLE_ENTRY_MULTIPLE_PROFILES_NO_MATCH BUNDLE_BUNDLE_ENTRY_MULTIPLE_PROFILES_NO_MATCH_REASON
Cross-version extension problem Profile rules
- What it means
- A FHIR cross-version extension URL is invalid or not allowed.
- Why
- Not applicable to NP Core R4 data.
- How to fix
- Remove it, or use an NP Core extension.
Validator message IDs: EXTENSION_EXT_VERSION_NOTALLOWED EXTENSION_FHIR_VERSION_EARLIEST EXTENSION_FHIR_VERSION_LATEST Extension_EXT_Version_Internal Extension_EXT_Version_Invalid Extension_EXT_Version_InvalidId Extension_EXT_Version_NoChange
Definition could not be resolved Profile rules
- What it means
- A profile, element or reference used during validation could not be found.
- Why
- The result may be incomplete.
- How to fix
- Verify the URLs used in the resource; if the problem persists report it to the sandbox team.
Validator message IDs: SD_ED_TYPE_PROFILE_UNKNOWN Unable_to_resolve_ Unable_to_resolve_element__in_profile_
Does not match any allowed profile Profile rules
- What it means
- The element must conform to one of several profiles and yours matched none (or more than one).
- Why
- NP Core restricts which profiles referenced or nested resources may use.
- How to fix
- Read the nested messages: they list what failed for each candidate profile. Fix the closest one.
Validator message IDs: Reference_REF_CantMatchChoice Reference_REF_CantMatchType Reference_REF_MultipleMatches Validation_VAL_Profile_MultipleMatches Validation_VAL_Profile_NoMatch
Element is not marked must-support Profile rules
- What it means
- You sent an element the profile does not flag as mustSupport.
- Why
- Informational: receivers are not required to understand it.
- How to fix
- No action needed unless you expected the element to be processed.
Validator message IDs: MustSupport_VAL_MustSupport
Element not allowed by profile Profile rules
- What it means
- the element is present, but the profile forbids it (maximum cardinality 0).
- Why
- NP Core prohibits this element so that exchanged data stays consistent.
- How to fix
- Delete the reported location from the resource.
Validator message IDs: Profile_VAL_NotAllowed Validation_VAL_Profile_NotAllowed
Entry does not match any allowed slice Profile rules
- What it means
- The list at the reported location is closed: every entry must match one of the slices the profile defines, and this one matches none (or several).
- Why
- NP Core defines slices (for example one per identifier type) and does not allow other entries here.
- How to fix
- Compare the entry against the slice definitions: usually a wrong
system,typeorcoding.code. Fix it or remove the entry.
Validator message IDs: Validation_VAL_Profile_MatchMultiple Validation_VAL_Profile_NotSlice
Entry does not match any known slice Profile rules
- What it means
- The entry at the reported location was not recognised as any of the profile's slices. The slicing is open, so this is allowed but worth checking.
- Why
- If you intended to supply a profiled entry (for example an NHFR or National ID identifier), a mistake in its system/code means it is not counted.
- How to fix
- Check that the discriminating fields (usually
system,type, orurl) exactly match the profile; ignore if the entry is intentionally extra.
Validator message IDs: Could_not_match_discriminator_for_slice_in_profile Does_not_match_slice_ This_element_does_not_match_any_known_slice_
Extension has the wrong value type Profile rules
- What it means
- The extension value is the wrong data type (for example valueString instead of valueCoding).
- Why
- The extension definition fixes its allowed types.
- How to fix
- Use the
value[x]type listed on the extension page.
{ "url": "<ext>", "valueCoding": { "system": "...", "code": "..." } }
Validator message IDs: Extension_EXT_Simple_ABSENT Extension_EXT_Simple_WRONG Extension_EXT_Type Extension_PROF_Type
Extension used in the wrong place Profile rules
- What it means
- This extension is only valid on specific elements and the reported location is not one of them.
- Why
- Extensions carry meaning only where their definition says they apply.
- How to fix
- Move the extension to the element named in its definition (see the extension page in the IG).
Validator message IDs: EXTENSION_EXTM_CONTEXT_WRONG_XVER EXTENSION_EXTP_CONTEXT_WRONG_XVER Extension_EXTM_Context_Wrong Extension_EXTM_Context_Wrong_VER Extension_EXTP_Context_Wrong Extension_EXTP_Context_Wrong_VER Profile_EXT_Not_Here
extension vs modifierExtension mix-up Profile rules
- What it means
- A normal extension was placed in
modifierExtensionor the reverse. - Why
- Modifier extensions change the meaning of the resource and are treated specially.
- How to fix
- Move it to
extension(ormodifierExtension) as the definition states.
Validator message IDs: Extension_EXT_Modifier_MismatchN Extension_EXT_Modifier_MismatchY Extension_EXT_Modifier_N Extension_EXT_Modifier_Y
Invalid sub-extension Profile rules
- What it means
- A nested extension URL is not defined by the parent extension.
- Why
- Complex extensions define exactly which parts they have.
- How to fix
- Use only the sub-extension urls from the extension definition.
Validator message IDs: Extension_EXT_Count_Mismatch Extension_EXT_Count_NotFound Extension_EXT_Fixed_Banned Extension_EXT_SubExtension_Invalid
No profile for this resource type Profile rules
- What it means
- A bundle entry has a resource type for which no profile was found.
- Why
- The entry is only checked against base FHIR.
- How to fix
- Usually informational. NP Core may not define a profile for this type.
Validator message IDs: Bundle_BUNDLE_Entry_NoProfile_TYPE
Profile cannot be used Profile rules
- What it means
- The profile has an internal problem, so the validator cannot use it.
- Why
- This is not a problem with your data.
- How to fix
- Report to the sandbox team with the profile URL.
Validator message IDs: ERROR_GENERATING_SNAPSHOT ERROR_PROCESSING_SNAPSHOT Profile___base__could_not_be_resolved Validation_VAL_Profile_NoSnapshot
Profile does not apply to this resource type Profile rules
- What it means
- The selected profile is for a different resource type than the one you sent.
- Why
- Each profile constrains exactly one resource type.
- How to fix
- Pick the profile that matches your resourceType, or fix the resourceType.
Validator message IDs: Validation_VAL_Profile_WrongType Validation_VAL_Profile_WrongType2
Profile not found Profile rules
- What it means
- A profile URL (in meta.profile or the request) is not known to this validator.
- Why
- Validation can only be checked against profiles that are loaded; a typo or a made-up URL is silently useless.
- How to fix
- Use the exact canonical URL of an NP Core profile (see the Profiles list in the portal) in
meta.profile, with no trailing spaces or version typo.
"meta": { "profile": [ "<canonical URL of the NP Core profile>" ] }
Validator message IDs: Bundle_BUNDLE_Entry_NoProfile_EXPL Reference_REF_CantResolveProfile Unable_to_resolve_profile__in_element_ Validation_VAL_Profile_Unknown Validation_VAL_Unknown_Profile
Slicing could not be evaluated Profile rules
- What it means
- The validator could not decide which slice an entry belongs to.
- Why
- Usually a profile-side limitation or an earlier error in the same element.
- How to fix
- Fix other errors on this element first; this message often disappears.
Validator message IDs: SLICING_CANNOT_BE_EVALUATED Unable_to_resolve_slice_matching__no_fixed_value_or_required_value_set Unable_to_resolve_slice_matching__slice_matching_by_value_set_not_done
Unknown extension Profile rules
- What it means
- The extension URL is not known to the validator.
- Why
- Unknown extensions cannot be validated; a typo means the data is silently lost. Unknown non-modifier extensions are allowed by FHIR but not understood by NP Core receivers.
- How to fix
- Verify the URL against the IG extension list. If it is your own extension, use your own domain and document it.
Validator message IDs: EXTENSION_CONTEXT_UNABLE_TO_CHECK_PROFILE EXTENSION_CONTEXT_UNABLE_TO_FIND_PROFILE Extension_EXT_Unknown Extension_EXT_Unknown_NotHere
Value differs from the value fixed by the profile Profile rules
- What it means
- The profile requires the element to have an exact value (or a required pattern) and yours differs.
- Why
- Fixed values identify the kind of data (for example a coding system) and cannot vary.
- How to fix
- Set the reported location to exactly the value shown in the message, including case and URL.
Validator message IDs: Fixed_Type_Checks_DT_Address_Line Fixed_Type_Checks_DT_Name_Family Fixed_Type_Checks_DT_Name_Given PATTERN_CHECK_STRING Type_Specific_Checks_DT_Fixed_Wrong _DT_Fixed_Wrong
Why an entry did not match a slice (details) Profile rules
- What it means
- Information attached to another message: it lists the slices the validator tried and why this entry matched none.
- Why
- Helps you see which field (usually
system,urlorcode) differs from what the profile expects. - How to fix
- Read the slice list: the entry is probably missing the discriminating value. Fix the error message it accompanies; nothing to fix here by itself.
Validator message IDs: Details_for__matching_against_Profile_
Array sent where a single value is expected (or the reverse) Structure
- What it means
- the element is a single value in FHIR but was sent as a JSON array
[...](or a repeating element was sent as a single value). - Why
- FHIR JSON types are strict: repeating elements (max cardinality above 1) are always arrays, single elements never are.
- How to fix
- Check the element's cardinality in the profile or FHIR spec. Send
"active": true, not"active": [true]; send"name": [ {...} ], not"name": {...}.
"active": true
Validator message IDs: PARSER_ARRAY_FOR_SINGLE
Bundle entry has no fullUrl Structure
- What it means
- Each entry in a non-transaction Bundle needs a
fullUrl. - Why
- References between entries are matched on it.
- How to fix
- Add
fullUrl:urn:uuid:<uuid>or an absolute server URL ending/Type/id.
{ "fullUrl": "urn:uuid:5f1d...", "resource": { } }
Validator message IDs: BUNDLE_BUNDLE_ENTRY_FULLURL_REQUIRED Bundle_BUNDLE_Entry_NoFullUrl Bundle_BUNDLE_FullUrl_NeedVersion
Document Bundle needs a timestamp Structure
- What it means
- Documents must have Bundle.timestamp.
- Why
- It dates the document.
- How to fix
- Add
timestamp.
"timestamp": "2025-01-20T09:30:00+05:45"
Validator message IDs: Bundle_Document_Date_Missing
Duplicate id Structure
- What it means
- The same id is used twice.
- Why
- Ids must be unique within their scope.
- How to fix
- Make them unique.
Validator message IDs: DUPLICATE_ID Same_id_on_multiple_elements__in_
Duplicate security label Structure
- What it means
- meta.security contains the same label twice.
- Why
- Duplicates are redundant.
- How to fix
- Remove the duplicate.
Validator message IDs: Meta_RES_Security_Duplicate
Elements out of order Structure
- What it means
- Elements or slice entries appear in a different order than the profile defines.
- Why
- FHIR XML requires strict element order, and some profiles require ordered slices.
- How to fix
- Reorder the entries at the reported location to follow the order in the profile (for JSON this only matters for ordered slices).
Validator message IDs: Named_items_are_out_of_order_in_the_slice Validation_VAL_Profile_OutOfOrder Validation_VAL_Profile_SliceOrder
Empty element Structure
- What it means
- the element is present but has no value, no children and no extensions.
- Why
- FHIR forbids empty elements; an empty object or array is invalid and often hides a bug in the serializer.
- How to fix
- Omit the reported location entirely when you have no data. Do not send
"",{},[]ornull.
// wrong "telecom": [] // right: leave telecom out
Validator message IDs: Element_must_have_some_content
Extension url missing or not absolute Structure
- What it means
- Every extension needs
urlwith the absolute extension canonical URL. - Why
- The url identifies the extension.
- How to fix
- Add
urlusing the exact canonical from the IG extension page.
{ "url": "<extension canonical>", "valueCoding": { } }
Validator message IDs: Extension_EXT_URL_Absolute Extension_EXT_Url_NotFound
fullUrl does not match resource Structure
- What it means
fullUrlis relative, or its last part does not match the resourceType/id.- Why
- A RESTful-looking fullUrl is treated as the resource identity.
- How to fix
- Use an absolute URL; if it ends with
/Patient/abc, the resource id must beabc. Otherwise useurn:uuid:.
Validator message IDs: BUNDLE_ENTRY_URL_ABSOLUTE BUNDLE_ENTRY_URL_MATCHES_NO_ID BUNDLE_ENTRY_URL_MATCHES_TYPE_ID Bundle_BUNDLE_Entry_Canonical Bundle_BUNDLE_Entry_IdUrlMismatch Bundle_BUNDLE_Entry_MismatchIdUrl
Resource id missing Structure
- What it means
- This context requires the resource to have an id.
- Why
- Needed to reference or update the resource.
- How to fix
- Add a top-level
id(for transaction/bundle entries use a UUID).
"id": "3f2b8c1e-...")
Validator message IDs: Resource_RES_ID_Missing
Resource id not allowed Structure
- What it means
- This context (for example a create request) forbids an id.
- Why
- The server assigns ids.
- How to fix
- Remove
id.
Validator message IDs: Resource_RES_ID_Prohibited
Resource type not allowed in this Bundle Structure
- What it means
- The entry's resource type is not permitted by the bundle rules.
- Why
- Profile rules restrict entry types.
- How to fix
- Remove the entry or use an allowed type.
Validator message IDs: Bundle_BUNDLE_Entry_NO_LOGICAL_EXPL Bundle_BUNDLE_Entry_Type Bundle_BUNDLE_Entry_Type3
Search Bundle structure problem Structure
- What it means
- A searchset Bundle is missing resources, ids, search modes or a self link.
- Why
- Clients rely on these.
- How to fix
- Add the missing parts.
Validator message IDs: BUNDLE_LINK_UNKNOWN BUNDLE_SEARCH_ENTRY_NO_RESOURCE BUNDLE_SEARCH_ENTRY_NO_RESOURCE_ID BUNDLE_SEARCH_NOSELF BUNDLE_SEARCH_NO_MODE
Unknown property or wrong JSON type Structure
- What it means
- The property is not defined for this element in FHIR, or has the wrong JSON type (e.g. object instead of array).
- Why
- FHIR is strict: misspelt properties are lost silently by receivers.
- How to fix
- Check spelling and case of the property (FHIR is case-sensitive). Repeating elements must be arrays, single elements must not be. For choice types use the suffixed name, e.g.
valueQuantity.
"name": [ { "family": "Sharma", "given": ["Ram"] } ]
Validator message IDs: This_property_must_be__not_ UNRECOGNISED_PROPERTY_TYPE UNRECOGNISED_PROPERTY_TYPE_WRONG Unrecognised_property_
Unknown resource type or content Structure
- What it means
- The resourceType (or a property) is not part of FHIR R4.
- Why
- The validator cannot interpret content it does not recognise.
- How to fix
- Check spelling and capitalisation of
resourceType(for examplePatient, notpatient). We validate against FHIR R4 (4.0.1).
Validator message IDs: This_does_not_appear_to_be_a_FHIR_resource_unknown_name_ Validation_VAL_Content_Unknown Validation_VAL_NoType Validation_VAL_Profile_NoDefinition
Unreferenced Bundle entry Structure
- What it means
- An entry in a document/message Bundle isn't linked from the Composition/MessageHeader.
- Why
- Everything in a document must be reachable from the Composition.
- How to fix
- Reference the entry from the Composition sections, or remove it.
Validator message IDs: BUNDLE_BUNDLE_ENTRY_REVERSE_MSG BUNDLE_BUNDLE_ENTRY_REVERSE_R4 BUNDLE_BUNDLE_ENTRY_REVERSE_R5 Bundle_BUNDLE_Entry_Orphan_DOCUMENT Bundle_BUNDLE_Entry_Orphan_MESSAGE
Wrong first entry in Bundle Structure
- What it means
- A document Bundle must start with a Composition, a message Bundle with a MessageHeader.
- Why
- Receivers read the first entry to understand the Bundle.
- How to fix
- Move the Composition (or MessageHeader) to be the first entry.
Validator message IDs: Bundle_BUNDLE_Entry_Document Bundle_BUNDLE_Entry_NoFirst Bundle_BUNDLE_Entry_NoFirstResource Validation_BUNDLE_Message
Business rule (constraint) failed Business rules (invariants)
- What it means
- A FHIRPath rule in the profile or base FHIR was not satisfied. The message begins with the rule key and its human-readable text.
- Why
- Constraints encode rules that cardinality cannot, for example 'either A or B must be present'.
- How to fix
- Read the rule text in the message; it says what must be true. Change the reported location so it holds. Look up the key on the profile page under Invariants.
Validator message IDs: INV_FAILED INV_FAILED_ID INV_FAILED_ID_SOURCE INV_FAILED_SOURCE
No profile selected Other
- What it means
- The validate request did not say which profile to validate against.
- Why
- The validator needs a target profile.
- How to fix
- Choose an NP Core profile in the portal, or pass
?profile=<canonical URL>to the API.
Validator message IDs: API_PROFILE_PARAM_MISSING
Reference to deprecated or draft artifact Other
- What it means
- You reference a profile, code system or value set marked deprecated, retired, draft or experimental.
- Why
- It may change or be removed.
- How to fix
- Prefer the current recommended artifact when one exists.
Validator message IDs: MSG_DEPRECATED MSG_DEPRECATED_SRC MSG_DRAFT MSG_DRAFT_SRC MSG_EXPERIMENTAL MSG_EXPERIMENTAL_SRC MSG_RETIRED MSG_RETIRED_SRC MSG_WITHDRAWN MSG_WITHDRAWN_SRC