Operation
Definition
<?xml version="1.0" encoding="UTF-8"?>
Validate that a coded value is in the code system. If the operation is not called at the
instance level, one of the parameters "url" or "codeSystem" must be
provided. The operation returns a result (true / false), an error message, and the recommended
display for the code.
When invoking this operation, a client SHALL provide one (and only one) of the parameters
(code+system, coding, or codeableConcept). Other parameters (including version and display)
are optional
CodeSystem URL. The server must know the code system (e.g. it is defined explicitly in
the server'scode systems, or it is known implicitly by the server
The codeSystem is provided directly as part of the request. Servers may choose not to
accept code systems in this fashion. This parameter is used when the client wants the
server to check against a code system that is not stored on the server
The display associated with the code, if provided. If a display is provided a code must
be provided. If no display is provided, the server cannot validate the display value,
but may choose to return a recommended display name in an extension in the outcome. Whether
displays are case sensitive is code system dependent
A full codeableConcept to validate. The server returns true if one of the coding values
is in the code system, and may also validate that the codings are not in conflict with
each other if more than one is present
The date for which the validation should be checked. Normally, this is the current conditions
(which is the default values) but under some circumstances, systems need to validate that
a correct code was used at some point in the past. A typical example of this would be
where code selection is constrained to the set of codes that were available when the patient
was treated, not when the record is being edited. Note that which date is appropriate
is a matter for implementation policy.
If this parameter has a value of true, the client is stating that the validation is being
performed in a context where a concept designated as 'abstract' is appropriate/allowed
to be used, and the server should regard abstract codes as valid. If this parameter is
false, abstract codes are not considered to be valid.
Note that. 'abstract' is a property defined by many HL7 code systems that indicates that
the concept is a logical grouping concept that is not intended to be used asa 'concrete'
concept to in an actual patient/care/process record. This language is borrowed from Object
Orienated theory where 'asbtract' objects are never instantiated. However in the general
record and terminology eco-system, there are many contexts where it is appropraite to
use these codes e.g. as decision making criterion, or when editing value sets themselves.
This parameter allows a client to indicate to the server that it is working in such a
context.
Error details, if result = false. If this is provided when result = true, the message
carries hints and warnings
Validate that a coded value is in the code system. If the operation is not called at the
instance level, one of the parameters "url" or "codeSystem" must be
provided. The operation returns a result (true / false), an error message, and the recommended
display for the code.
When invoking this operation, a client SHALL provide one (and only one) of the parameters
(code+system, coding, or codeableConcept). Other parameters (including version and display)
are optional
CodeSystem URL. The server must know the code system (e.g. it is defined explicitly in
the server'scode systems, or it is known implicitly by the server
The codeSystem is provided directly as part of the request. Servers may choose not to
accept code systems in this fashion. This parameter is used when the client wants the
server to check against a code system that is not stored on the server
The display associated with the code, if provided. If a display is provided a code must
be provided. If no display is provided, the server cannot validate the display value,
but may choose to return a recommended display name in an extension in the outcome. Whether
displays are case sensitive is code system dependent
A full codeableConcept to validate. The server returns true if one of the coding values
is in the code system, and may also validate that the codings are not in conflict with
each other if more than one is present
The date for which the validation should be checked. Normally, this is the current conditions
(which is the default values) but under some circumstances, systems need to validate that
a correct code was used at some point in the past. A typical example of this would be
where code selection is constrained to the set of codes that were available when the patient
was treated, not when the record is being edited. Note that which date is appropriate
is a matter for implementation policy.
If this parameter has a value of true, the client is stating that the validation is being
performed in a context where a concept designated as 'abstract' is appropriate/allowed
to be used, and the server should regard abstract codes as valid. If this parameter is
false, abstract codes are not considered to be valid.
Note that. 'abstract' is a property defined by many HL7 code systems that indicates that
the concept is a logical grouping concept that is not intended to be used asa 'concrete'
concept to in an actual patient/care/process record. This language is borrowed from Object
Orienated theory where 'asbtract' objects are never instantiated. However in the general
record and terminology eco-system, there are many contexts where it is appropraite to
use these codes e.g. as decision making criterion, or when editing value sets themselves.
This parameter allows a client to indicate to the server that it is working in such a
context.
Error details, if result = false. If this is provided when result = true, the message
carries hints and warnings
<?xml version="1.0" encoding="UTF-8"?>
<OperationDefinition xmlns="http://hl7.org/fhir"> <id value="CodeSystem-validate-code"/> <text> <status value="generated"/> <div xmlns="http://www.w3.org/1999/xhtml"> <p class="res-header-id"> <b> Generated Narrative: OperationDefinition CodeSystem-validate-code</b> </p> <a name="CodeSystem-validate-code"> </a> <a name="hcCodeSystem-validate-code"> </a> <p> URL: [base]/CodeSystem/$validate-code</p> <p> URL: [base]/CodeSystem/[id]/$validate-code</p> <h3> Parameters</h3> <table class="grid"> <tr> <td> <b> Use</b> </td> <td> <b> Name</b> </td> <td> <b> Scope</b> </td> <td> <b> Cardinality</b> </td> <td> <b> Type</b> </td> <td> <b> Binding</b> </td> <td> <b> Documentation</b> </td> </tr> <tr> <td> IN</td> <td> url</td> <td> type</td> <td> 0..1</td> <td> <a href="datatypes.html#uri">uri</a> </td> <td/> <td> <div> <p> CodeSystem URL. The server must know the code system (e.g. it is defined explicitly
in the server'scode systems, or it is known implicitly by the server</p>
</div> </td> </tr> <tr> <td> IN</td> <td> codeSystem</td> <td> type</td> <td> 0..1</td> <td> <a href="codesystem.html">CodeSystem</a> </td> <td/> <td> <div> <p> The codeSystem is provided directly as part of the request. Servers may choose
not to accept code systems in this fashion. This parameter is used when the client
wants the server to check against a code system that is not stored on the server</p>
</div> </td> </tr> <tr> <td> IN</td> <td> code</td> <td/> <td> 0..1</td> <td> <a href="datatypes.html#code">code</a> </td> <td/> <td> <div> <p> The code that is to be validated</p> </div> </td> </tr> <tr> <td> IN</td> <td> version</td> <td> type</td> <td> 0..1</td> <td> <a href="datatypes.html#string">string</a> </td> <td/> <td> <div> <p> The version of the code system, if one was provided in the source data</p> </div> </td> </tr> <tr> <td> IN</td> <td> display</td> <td/> <td> 0..1</td> <td> <a href="datatypes.html#string">string</a> </td> <td/> <td> <div> <p> The display associated with the code, if provided. If a display is provided a code
must be provided. If no display is provided, the server cannot validate the display
value, but may choose to return a recommended display name in an extension in the
outcome. Whether displays are case sensitive is code system dependent</p>
</div> </td> </tr> <tr> <td> IN</td> <td> coding</td> <td/> <td> 0..1</td> <td> <a href="datatypes.html#Coding">Coding</a> </td> <td/> <td> <div> <p> A coding to validate. The system must match the specified code system</p> </div> </td> </tr> <tr> <td> IN</td> <td> codeableConcept</td> <td/> <td> 0..1</td> <td> <a href="datatypes.html#CodeableConcept">CodeableConcept</a> </td> <td/> <td> <div> <p> A full codeableConcept to validate. The server returns true if one of the coding
values is in the code system, and may also validate that the codings are not in
conflict with each other if more than one is present</p>
</div> </td> </tr> <tr> <td> IN</td> <td> date</td> <td/> <td> 0..1</td> <td> <a href="datatypes.html#dateTime">dateTime</a> </td> <td/> <td> <div> <p> The date for which the validation should be checked. Normally, this is the current
conditions (which is the default values) but under some circumstances, systems
need to validate that a correct code was used at some point in the past. A typical
example of this would be where code selection is constrained to the set of codes
that were available when the patient was treated, not when the record is being
edited. Note that which date is appropriate is a matter for implementation policy.</p>
</div> </td> </tr> <tr> <td> IN</td> <td> abstract</td> <td/> <td> 0..1</td> <td> <a href="datatypes.html#boolean">boolean</a> </td> <td/> <td> <div> <p> If this parameter has a value of true, the client is stating that the validation
is being performed in a context where a concept designated as 'abstract' is appropriate/allow
ed to be used, and the server should regard abstract codes as valid. If this parameter
is false, abstract codes are not considered to be valid.</p>
<p> Note that. 'abstract' is a property defined by many HL7 code systems that indicates
that the concept is a logical grouping concept that is not intended to be used
asa 'concrete' concept to in an actual patient/care/process record. This language
is borrowed from Object Orienated theory where 'asbtract' objects are never instantiated.
However in the general record and terminology eco-system, there are many contexts
where it is appropraite to use these codes e.g. as decision making criterion, or
when editing value sets themselves. This parameter allows a client to indicate
to the server that it is working in such a context.</p>
</div> </td> </tr> <tr> <td> IN</td> <td> displayLanguage</td> <td/> <td> 0..1</td> <td> <a href="datatypes.html#code">code</a> </td> <td/> <td> <div> <p> Specifies the language to be used for description when validating the display property</p> </div> </td> </tr> <tr> <td> OUT</td> <td> result</td> <td/> <td> 1..1</td> <td> <a href="datatypes.html#boolean">boolean</a> </td> <td/> <td> <div> <p> True if the concept details supplied are valid</p> </div> </td> </tr> <tr> <td> OUT</td> <td> message</td> <td/> <td> 0..1</td> <td> <a href="datatypes.html#string">string</a> </td> <td/> <td> <div> <p> Error details, if result = false. If this is provided when result = true, the message
carries hints and warnings</p>
</div> </td> </tr> <tr> <td> OUT</td> <td> display</td> <td/> <td> 0..1</td> <td> <a href="datatypes.html#string">string</a> </td> <td/> <td> <div> <p> A valid display for the concept if the system wishes to display this to a user</p> </div> </td> </tr> <tr> <td> OUT</td> <td> code</td> <td/> <td> 0..1</td> <td> <a href="datatypes.html#code">code</a> </td> <td/> <td> <div> <p> The code that was validated</p> </div> </td> </tr> <tr> <td> OUT</td> <td> system</td> <td/> <td> 0..1</td> <td> <a href="datatypes.html#uri">uri</a> </td> <td/> <td> <div> <p> The system for the code that was validated</p> </div> </td> </tr> <tr> <td> OUT</td> <td> version</td> <td/> <td> 0..1</td> <td> <a href="datatypes.html#string">string</a> </td> <td/> <td> <div> <p> The version of the system of the code that was validated</p> </div> </td> </tr> <tr> <td> OUT</td> <td> codeableConcept</td> <td/> <td> 0..1</td> <td> <a href="datatypes.html#CodeableConcept">CodeableConcept</a> </td> <td/> <td> <div> <p> A codeableConcept containing codings for all the validated codes</p> </div> </td> </tr> <tr> <td> OUT</td> <td> issues</td> <td/> <td> 0..1</td> <td> <a href="operationoutcome.html">OperationOutcome</a> </td> <td/> <td> <div> <p> List of itemised issues with paths constrained to simple FHIRPath. Examples are
CodeableConcept, CodeableConcept.coding[0], CodeableConcept.coding[1].display,
or Coding.display</p>
</div> </td> </tr> </table> </div> </text> <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm"> <valueInteger value="5"/> </extension> <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status"> <valueCode value="normative"/> </extension> <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-wg"> <valueCode value="vocab"/> </extension> <url value="http://hl7.org/fhir/OperationDefinition/CodeSystem-validate-code"/> <version value="6.0.0-ballot4"/> <name value="ValidateCode"/> <title value="Code System based Validation"/> <status value="active"/> <kind value="operation"/> <experimental value="false"/> <date value="2025-12-18T07:07:42+11:00"/> <publisher value="HL7 International / Terminology Infrastructure"/> <contact> <telecom> <system value="url"/> <value value="http://hl7.org/fhir"/> </telecom> <telecom> <system value="email"/> <value value="fhir@lists.hl7.org"/> </telecom> </contact> <contact> <telecom> <system value="url"/> <value value="http://www.hl7.org/Special/committees/Vocab"/> </telecom> </contact> <description value="Validate that a coded value is in the code system. If the operation is not called
at the instance level, one of the parameters "url" or "codeSystem"
must be provided. The operation returns a result (true / false), an error message,
and the recommended display for the code.
When invoking this operation, a client **SHALL** provide one (and only one) of
the parameters (code+system, coding, or codeableConcept). Other parameters (including
version and display) are optional. When validating a code or a coding, then the
code, system and version output parameters **SHOULD** be populated when possible.
When a validating a CodeableConcept, then the codeableConcept output parameter
**SHOULD** be populated when possible."/>
<jurisdiction> <coding> <system value="http://unstats.un.org/unsd/methods/m49/m49.htm"/> <code value="001"/> <display value="World"/> </coding> </jurisdiction> <affectsState value="false"/> <code value="validate-code"/> <resource value="CodeSystem"/> <system value="false"/> <type value="true"/> <instance value="true"/> <parameter> <name value="url"/> <use value="in"/> <scope value="type"/> <min value="0"/> <max value="1"/> <documentation value="CodeSystem URL. The server must know the code system (e.g. it is defined explicitly
in the server'scode systems, or it is known implicitly by the server"/>
<type value="uri"/> </parameter> <parameter> <name value="codeSystem"/> <use value="in"/> <scope value="type"/> <min value="0"/> <max value="1"/> <documentation value="The codeSystem is provided directly as part of the request. Servers may choose
not to accept code systems in this fashion. This parameter is used when the client
wants the server to check against a code system that is not stored on the server"/>
<type value="CodeSystem"/> </parameter> <parameter> <name value="code"/> <use value="in"/> <min value="0"/> <max value="1"/> <documentation value="The code that is to be validated"/> <type value="code"/> </parameter> <parameter> <name value="version"/> <use value="in"/> <scope value="type"/> <min value="0"/> <max value="1"/> <documentation value="The version of the code system, if one was provided in the source data"/> <type value="string"/> </parameter> <parameter> <name value="display"/> <use value="in"/> <min value="0"/> <max value="1"/> <documentation value="The display associated with the code, if provided. If a display is provided a code
must be provided. If no display is provided, the server cannot validate the display
value, but may choose to return a recommended display name in an extension in the
outcome. Whether displays are case sensitive is code system dependent"/>
<type value="string"/> </parameter> <parameter> <name value="coding"/> <use value="in"/> <min value="0"/> <max value="1"/> <documentation value="A coding to validate. The system must match the specified code system"/> <type value="Coding"/> </parameter> <parameter> <name value="codeableConcept"/> <use value="in"/> <min value="0"/> <max value="1"/> <documentation value="A full codeableConcept to validate. The server returns true if one of the coding
values is in the code system, and may also validate that the codings are not in
conflict with each other if more than one is present"/>
<type value="CodeableConcept"/> </parameter> <parameter> <name value="date"/> <use value="in"/> <min value="0"/> <max value="1"/> <documentation value="The date for which the validation should be checked. Normally, this is the current
conditions (which is the default values) but under some circumstances, systems
need to validate that a correct code was used at some point in the past. A typical
example of this would be where code selection is constrained to the set of codes
that were available when the patient was treated, not when the record is being
edited. Note that which date is appropriate is a matter for implementation policy."/>
<type value="dateTime"/> </parameter> <parameter> <name value="abstract"/> <use value="in"/> <min value="0"/> <max value="1"/> <documentation value="If this parameter has a value of true, the client is stating that the validation
is being performed in a context where a concept designated as 'abstract' is appropriate/allow
ed to be used, and the server should regard abstract codes as valid. If this parameter
is false, abstract codes are not considered to be valid.
Note that. 'abstract' is a property defined by many HL7 code systems that indicates
that the concept is a logical grouping concept that is not intended to be used
asa 'concrete' concept to in an actual patient/care/process record. This language
is borrowed from Object Orienated theory where 'asbtract' objects are never instantiated.
However in the general record and terminology eco-system, there are many contexts
where it is appropraite to use these codes e.g. as decision making criterion, or
when editing value sets themselves. This parameter allows a client to indicate
to the server that it is working in such a context."/>
<type value="boolean"/> </parameter> <parameter> <name value="displayLanguage"/> <use value="in"/> <min value="0"/> <max value="1"/> <documentation value="Specifies the language to be used for description when validating the display property"/> <type value="code"/> </parameter> <parameter> <name value="result"/> <use value="out"/> <min value="1"/> <max value="1"/> <documentation value="True if the concept details supplied are valid"/> <type value="boolean"/> </parameter> <parameter> <name value="message"/> <use value="out"/> <min value="0"/> <max value="1"/> <documentation value="Error details, if result = false. If this is provided when result = true, the message
carries hints and warnings"/>
<type value="string"/> </parameter> <parameter> <name value="display"/> <use value="out"/> <min value="0"/> <max value="1"/> <documentation value="A valid display for the concept if the system wishes to display this to a user"/> <type value="string"/> </parameter> <parameter> <name value="code"/> <use value="out"/> <min value="0"/> <max value="1"/> <documentation value="The code that was validated"/> <type value="code"/> </parameter> <parameter> <name value="system"/> <use value="out"/> <min value="0"/> <max value="1"/> <documentation value="The system for the code that was validated"/> <type value="uri"/> </parameter> <parameter> <name value="version"/> <use value="out"/> <min value="0"/> <max value="1"/> <documentation value="The version of the system of the code that was validated"/> <type value="string"/> </parameter> <parameter> <name value="codeableConcept"/> <use value="out"/> <min value="0"/> <max value="1"/> <documentation value="A codeableConcept containing codings for all the validated codes"/> <type value="CodeableConcept"/> </parameter> <parameter> <name value="issues"/> <use value="out"/> <min value="0"/> <max value="1"/> <documentation value="List of itemised issues with paths constrained to simple FHIRPath. Examples are
CodeableConcept, CodeableConcept.coding[0], CodeableConcept.coding[1].display,
or Coding.display"/>
<type value="OperationOutcome"/> </parameter>
</
OperationDefinition
>
Usage
note:
every
effort
has
been
made
to
ensure
that
the
examples
are
correct
and
useful,
but
they
are
not
a
normative
part
of
the
specification.