This page is part of the FHIR Specification (v1.0.0: DSTU 2 Ballot 3). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3 R2
Operation Definition
<OperationDefinition xmlns="http://hl7.org/fhir"> <id value="ValueSet-validate-code"/> <text> <status value="generated"/> <div xmlns="http://www.w3.org/1999/xhtml"> <h2>Value Set based Validation</h2> <p>OPERATION: Value Set based Validation</p> <div> <p>Validate that a coded value is in the set of codes allowed by a value set. If the operation is not called at the instance level, one of the in parameters "identifier" or "valueset" must be provided. One (and only one) of the in parameters (code, coding, codeableConcept) must be provided. The operation returns a result (true / false), an error message, and the recommended display for the code</p> </div> <p>URL: [base]/ValueSet/$validate-code</p> <p>URL: [base]/ValueSet/[id]/$validate-code</p> <p>Parameters</p> <table class="grid"> <tr> <td> <b>Use</b> </td> <td> <b>Name</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>identifier</td> <td>0..1</td> <td>uri</td> <td/> <td> <div> <p>A logical value set id (i.e. ValueSet.url). The server must know the value set (e.g. it is defined explicitly in the server's value sets, or it is defined implicitly by some code system known to the server</p> </div> </td> </tr> <tr> <td>IN</td> <td>context</td> <td>0..1</td> <td>uri</td> <td/> <td> <div> <p>The context of the value set, so that the server can resolve this to a value set to validate against. The recommended format for this URI is [Structure Definition URL]#[name or path into structure definition] e.g. http://hl7.org/fhir/StructureDefinition/observation-hspc-height-hspc height#Observation.interpretation. Other forms may be used but are not defined. This form is only useable if the terminology server also has access to the profile registry that the server is using, but can be used to delegate the mapping from an application context to a binding to run-time</p> </div> </td> </tr> <tr> <td>IN</td> <td>valueSet</td> <td>0..1</td> <td>ValueSet</td> <td/> <td> <div> <p>The value set is provided directly as part of the request. Servers may choose not to accept value sets in this fashion. This parameter is used when the client wants the server to expand a value set that is not stored on the server</p> </div> </td> </tr> <tr> <td>IN</td> <td>code</td> <td>0..1</td> <td>code</td> <td/> <td> <div> <p>The code that is to be validated. If a code is provided, a system must be provided</p> </div> </td> </tr> <tr> <td>IN</td> <td>system</td> <td>0..1</td> <td>uri</td> <td/> <td> <div> <p>The system for the code that is to be validated</p> </div> </td> </tr> <tr> <td>IN</td> <td>version</td> <td>0..1</td> <td>string</td> <td/> <td> <div> <p>The version of the system, if one was provided in the source data</p> </div> </td> </tr> <tr> <td>IN</td> <td>display</td> <td>0..1</td> <td>string</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>0..1</td> <td>Coding</td> <td/> <td> <div> <p>A coding to validate</p> </div> </td> </tr> <tr> <td>IN</td> <td>codeableConcept</td> <td>0..1</td> <td>CodeableConcept</td> <td/> <td> <div> <p>A full codeableConcept to validate. The server returns true if one of the coding values is in the value set, 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>0..1</td> <td>dateTime</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>0..1</td> <td>boolean</td> <td/> <td> <div> <p>if true, then an abstract code is allowed to be used in the context of the code that is being validated. Typically, abstract codes are allowed to be used in value set specifications (e.g. any code that is subsumed by an abstract code). If false (which is the default value), then only concrete codes as defined by the value set are allowed</p> </div> </td> </tr> <tr> <td>OUT</td> <td>result</td> <td>1..1</td> <td>boolean</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>0..1</td> <td>string</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>0..1</td> <td>string</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> </table> </div> </text> <url value="http://hl7.org/fhir/OperationDefinition/ValueSet-validate-code"/> <name value="Value Set based Validation"/> <status value="draft"/> <kind value="operation"/> <publisher value="HL7 (FHIR Project)"/> <contact> <telecom> <system value="other"/> <value value="http://hl7.org/fhir"/> </telecom> <telecom> <system value="email"/> <value value="fhir@lists.hl7.org"/> </telecom> </contact> <date value="2015-09-01T14:38:48+10:00"/> <description value="Validate that a coded value is in the set of codes allowed by a value set. If the operation is not called at the instance level, one of the in parameters "identifier" or "valueset" must be provided. One (and only one) of the in parameters (code, coding, codeableConcept) must be provided. The operation returns a result (true / false), an error message, and the recommended display for the code"/> <code value="validate-code"/> <system value="false"/> <type value="ValueSet"/> <instance value="true"/> <parameter> <name value="identifier"/> <use value="in"/> <min value="0"/> <max value="1"/> <documentation value="A logical value set id (i.e. ValueSet.url). The server must know the value set (e.g. it is defined explicitly in the server's value sets, or it is defined implicitly by some code system known to the server"/> <type value="uri"/> </parameter> <parameter> <name value="context"/> <use value="in"/> <min value="0"/> <max value="1"/> <documentation value="The context of the value set, so that the server can resolve this to a value set to validate against. The recommended format for this URI is [Structure Definition URL]#[name or path into structure definition] e.g. http://hl7.org/fhir/StructureDefinition/observation-hspc-height-hspc height#Observation.interpretation. Other forms may be used but are not defined. This form is only useable if the terminology server also has access to the profile registry that the server is using, but can be used to delegate the mapping from an application context to a binding to run-time"/> <type value="uri"/> </parameter> <parameter> <name value="valueSet"/> <use value="in"/> <min value="0"/> <max value="1"/> <documentation value="The value set is provided directly as part of the request. Servers may choose not to accept value sets in this fashion. This parameter is used when the client wants the server to expand a value set that is not stored on the server"/> <type value="ValueSet"/> </parameter> <parameter> <name value="code"/> <use value="in"/> <min value="0"/> <max value="1"/> <documentation value="The code that is to be validated. If a code is provided, a system must be provided"/> <type value="code"/> </parameter> <parameter> <name value="system"/> <use value="in"/> <min value="0"/> <max value="1"/> <documentation value="The system for the code that is to be validated"/> <type value="uri"/> </parameter> <parameter> <name value="version"/> <use value="in"/> <min value="0"/> <max value="1"/> <documentation value="The version of the 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"/> <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 value set, 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 true, then an abstract code is allowed to be used in the context of the code that is being validated. Typically, abstract codes are allowed to be used in value set specifications (e.g. any code that is subsumed by an abstract code). If false (which is the default value), then only concrete codes as defined by the value set are allowed"/> <type value="boolean"/> </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> </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.