
Package org.hl7.fhir.r4.fhirpath
Interface IHostApplicationServices
- All Known Implementing Classes:
BaseHostServices
,LiquidEngine
,Runner
public interface IHostApplicationServices
This interface allows the application making use of a FHIRPathEngine to provide
additional services that can be used in the FHIRPath statements. The services fall into
two categories: extending the FHIRPath engine with types, constants and functions, and
performing work that the FHIRPath engine doesn't know how to do itself
Functionality:
* resolveConstant()/resolveConstantType() - register constants
* log() - do something when .log() is used in the FHIRPath statement
* resolveFunction() / checkFunction() / executeFunction() - allow the application to define FHIRPath functions of it's own
* resolveReference() - called when a FHIRPath statement uses 'resolve()' so the host application can attempt to resolve the reference
* resolveValueSet() - called when memberOf() is used
* conformsToProfile() - check that the content conforms to the stated profile. Used by the ValidationEngine - not generally suitable for applications to provide their own interface
* paramIsType() - used when the FHIRPath statement
Note that his used to be called IEvaluationContext in the FHIRPathEngine class, but was renamed
due to a broken interface - see comments at https://github.com/hapifhir/org.hl7.fhir.core/releases/tag/6.6.0
-
Method Summary
Modifier and TypeMethodDescriptioncheckFunction
(FHIRPathEngine engine, Object appContext, String functionName, TypeDetails focus, List<TypeDetails> parameters) Check the function parameters, and throw an error if they are incorrect, or return the type for the functionboolean
conformsToProfile
(FHIRPathEngine engine, Object appContext, Base item, String url) executeFunction
(FHIRPathEngine engine, Object appContext, List<Base> focus, String functionName, List<List<Base>> parameters) boolean
when the .log() function is calledboolean
paramIsType
(String name, int index) For the moment, there can only be one parameter if it's a type parameterresolveConstant
(FHIRPathEngine engine, Object appContext, String name, org.hl7.fhir.utilities.fhirpath.FHIRPathConstantEvaluationMode mode) A constant reference - e.g. a reference to a name that must be resolved in context.resolveConstantType
(FHIRPathEngine engine, Object appContext, String name, org.hl7.fhir.utilities.fhirpath.FHIRPathConstantEvaluationMode mode) Compile time support for a constant reference - e.g. a reference to a name that must be resolved in context.resolveFunction
(FHIRPathEngine engine, String functionName) resolveReference
(FHIRPathEngine engine, Object appContext, String url, Base refContext) Implementation of resolve() function.resolveValueSet
(FHIRPathEngine engine, Object appContext, String url)
-
Method Details
-
resolveConstant
List<Base> resolveConstant(FHIRPathEngine engine, Object appContext, String name, org.hl7.fhir.utilities.fhirpath.FHIRPathConstantEvaluationMode mode) throws org.hl7.fhir.exceptions.PathEngineException A constant reference - e.g. a reference to a name that must be resolved in context. resolveConstant is invoked under 3 different circumstances, which are reflected in the mode parameter: * an explicit constant of the form %{token}, where the token isn't a known internal constant * every evaluation of any expression to allow the Host Application to decide whether to interpret the expression as a constant even if it is not explicitly a constant * at the start of evaluating an expression if the focus provided by the application when invoking the expression is {} The return value is a List- a collection, though most constants are singleton values note that variables created using defineVariable() in the FHIRPath expressions will not be processed by resolveConstant (or resolveConstantType) - Parameters:
appContext
- - application context passed into the FHIRPath engine when first executedname
- - name reference to resolve. if mode = EXPLICIT, the % will NOT be in the namemode
- - what situation the reference comes from - see the documentation for @FHIRPathConstantEvaluationMode- Returns:
- the value of the constant , or an empty list, though the host application can choose to throw an exception
- Throws:
org.hl7.fhir.exceptions.PathEngineException
-
resolveConstantType
TypeDetails resolveConstantType(FHIRPathEngine engine, Object appContext, String name, org.hl7.fhir.utilities.fhirpath.FHIRPathConstantEvaluationMode mode) throws org.hl7.fhir.exceptions.PathEngineException Compile time support for a constant reference - e.g. a reference to a name that must be resolved in context. resolveConstant is invoked under 3 different circumstances, which are reflected in the mode parameter: * an explicit constant of the form %{token}, where the token isn't a known internal constant * every evaluation of any expression to allow the Host Application to decide whether to interpret the expression as a constant even if it is not explicitly a constant * at the start of evaluating an expression if the focus provided by the application when invoking the expression is {} The return value is a TypeDetails - a collection, though most constants are singleton values note that variables created using defineVariable() in the FHIRPath expressions will not be processed by resolveConstant (or resolveConstantType)- Parameters:
appContext
- - application context passed into the FHIRPath engine when first executedname
- - name reference to resolve. if mode = EXPLICIT, the % will NOT be in the namemode
- - what situation the reference comes from - see the documentation for @FHIRPathConstantEvaluationMode- Returns:
- the type of the constant, or null, though the host application can choose to throw an exception
- Throws:
org.hl7.fhir.exceptions.PathEngineException
-
log
when the .log() function is called- Parameters:
argument
-focus
-- Returns:
-
resolveFunction
- Parameters:
functionName
-- Returns:
- null if the function is not known
-
checkFunction
TypeDetails checkFunction(FHIRPathEngine engine, Object appContext, String functionName, TypeDetails focus, List<TypeDetails> parameters) throws org.hl7.fhir.exceptions.PathEngineException Check the function parameters, and throw an error if they are incorrect, or return the type for the function- Parameters:
functionName
-parameters
-- Returns:
- Throws:
org.hl7.fhir.exceptions.PathEngineException
-
executeFunction
List<Base> executeFunction(FHIRPathEngine engine, Object appContext, List<Base> focus, String functionName, List<List<Base>> parameters) - Parameters:
appContext
-functionName
-parameters
-- Returns:
-
resolveReference
Base resolveReference(FHIRPathEngine engine, Object appContext, String url, Base refContext) throws org.hl7.fhir.exceptions.FHIRException Implementation of resolve() function. Passed a string, return matching resource, if one is known - else null- Parameters:
url
- the reference (Reference.reference or the value of the canonical- Returns:
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
conformsToProfile
boolean conformsToProfile(FHIRPathEngine engine, Object appContext, Base item, String url) throws org.hl7.fhir.exceptions.FHIRException - Throws:
org.hl7.fhir.exceptions.FHIRException
-
resolveValueSet
-
paramIsType
For the moment, there can only be one parameter if it's a type parameter- Parameters:
name
-- Returns:
- true if it's a type parameter
-