Package org.hl7.fhir.r4b.utils
Class FHIRPathEngine
- java.lang.Object
-
- org.hl7.fhir.r4b.utils.FHIRPathEngine
-
public class FHIRPathEngine extends Object
- Author:
- Grahame Grieve
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classFHIRPathEngine.ElementDefinitionMatchstatic classFHIRPathEngine.ExpressionNodeWithOffsetstatic interfaceFHIRPathEngine.IEvaluationContextstatic classFHIRPathEngine.TypedElementDefinition
-
Constructor Summary
Constructors Constructor Description FHIRPathEngine(IWorkerContext worker)FHIRPathEngine(IWorkerContext worker, ProfileUtilities utilities)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static StringbytesToHex(byte[] bytes)TypeDetailscheck(Object appContext, String resourceType, String context, String expr)TypeDetailscheck(Object appContext, String resourceType, String context, ExpressionNode expr)check that paths referred to in the ExpressionNode are valid xPathStartsWithValueRef is a hack work around for the fact that FHIR Path sometimes needs a different starting point than the xpath returns a list of the possible types that might be returned by executing the ExpressionNode against a particular contextTypeDetailscheck(Object appContext, StructureDefinition sd, String context, ExpressionNode expr)TypeDetailscheck(Object appContext, StructureDefinition sd, ExpressionNode expr)booleanconvertToBoolean(List<Base> items)worker routine for converting a set of objects to a boolean representation (for invariants)StringconvertToString(List<Base> items)worker routine for converting a set of objects to a string representationStringconvertToString(Base item)List<Base>evaluate(Object appContext, Base focusResource, Base rootResource, Base base, ExpressionNode expressionNode)evaluate a path and return the matching elementsList<Base>evaluate(Object appContext, Resource focusResource, Resource rootResource, Base base, String path)evaluate a path and return the matching elementsList<Base>evaluate(Object appContext, Resource focusResource, Resource rootResource, Base base, ExpressionNode ExpressionNode)evaluate a path and return the matching elementsList<Base>evaluate(Base base, String path)evaluate a path and return the matching elementsList<Base>evaluate(Base base, ExpressionNode ExpressionNode)evaluate a path and return the matching elementsFHIRPathEngine.TypedElementDefinitionevaluateDefinition(ExpressionNode expr, StructureDefinition profile, FHIRPathEngine.TypedElementDefinition element, StructureDefinition source)given an element definition in a profile, what element contains the differentiating fixed for the element, given the differentiating expresssion.booleanevaluateToBoolean(Object appInfo, Base focusResource, Base rootResource, Base base, ExpressionNode node)evaluate a path and return true or false (e.g.booleanevaluateToBoolean(Object appInfo, Resource focusResource, Resource rootResource, Base base, ExpressionNode node)evaluate a path and return true or false (e.g.booleanevaluateToBoolean(Resource focusResource, Resource rootResource, Base base, String path)evaluate a path and return true or false (e.g.booleanevaluateToBoolean(Resource focusResource, Resource rootResource, Base base, ExpressionNode node)evaluate a path and return true or false (e.g.StringevaluateToString(Object appInfo, Base focusResource, Base rootResource, Base base, ExpressionNode node)StringevaluateToString(Base base, String path)evaluate a path and a string containing the outcome (for display)StringforLog()protected voidgetChildrenByName(Base item, String name, List<Base> result)Given an item, return all the children that conform to the pattern described in name Possible patterns: - a simple name (which may be the base of a name with [] e.g.FHIRPathEngine.IEvaluationContextgetHostServices()StringgetLocation()org.hl7.fhir.utilities.validation.ValidationOptionsgetTerminologyServiceOptions()IWorkerContextgetWorker()booleanhasLog()static byte[]hexStringToByteArray(String s)booleanisAllowPolymorphicNames()booleanisLegacyMode()ExpressionNodeparse(String path)Parse a path for later use using executeExpressionNodeparse(String path, String name)ExpressionNodeparse(FHIRLexer lexer)Parse a path that is part of some other syntaxFHIRPathEngine.ExpressionNodeWithOffsetparsePartial(String path, int i)Parse a path for later use using executeQuantityparseQuantityString(String s)voidsetAllowPolymorphicNames(boolean allowPolymorphicNames)voidsetHostServices(FHIRPathEngine.IEvaluationContext constantResolver)voidsetLegacyMode(boolean legacyMode)voidsetLocation(String location)StringtakeLog()
-
-
-
Constructor Detail
-
FHIRPathEngine
public FHIRPathEngine(IWorkerContext worker)
- Parameters:
worker- - used when validating paths (@check), and used doing value set membership when executing tests (once that's defined)
-
FHIRPathEngine
public FHIRPathEngine(IWorkerContext worker, ProfileUtilities utilities)
-
-
Method Detail
-
getHostServices
public FHIRPathEngine.IEvaluationContext getHostServices()
-
setHostServices
public void setHostServices(FHIRPathEngine.IEvaluationContext constantResolver)
-
getLocation
public String getLocation()
-
setLocation
public void setLocation(String location)
-
getChildrenByName
protected void getChildrenByName(Base item, String name, List<Base> result) throws org.hl7.fhir.exceptions.FHIRException
Given an item, return all the children that conform to the pattern described in name Possible patterns: - a simple name (which may be the base of a name with [] e.g. value[x]) - a name with a type replacement e.g. valueCodeableConcept - * which means all children - ** which means all descendants- Parameters:
item-name-result-- Throws:
org.hl7.fhir.exceptions.FHIRException
-
isLegacyMode
public boolean isLegacyMode()
-
setLegacyMode
public void setLegacyMode(boolean legacyMode)
-
parse
public ExpressionNode parse(String path) throws FHIRLexer.FHIRLexerException
Parse a path for later use using execute- Parameters:
path-- Returns:
- Throws:
org.hl7.fhir.exceptions.PathEngineExceptionExceptionFHIRLexer.FHIRLexerException
-
parse
public ExpressionNode parse(String path, String name) throws FHIRLexer.FHIRLexerException
- Throws:
FHIRLexer.FHIRLexerException
-
parsePartial
public FHIRPathEngine.ExpressionNodeWithOffset parsePartial(String path, int i) throws FHIRLexer.FHIRLexerException
Parse a path for later use using execute- Parameters:
path-- Returns:
- Throws:
org.hl7.fhir.exceptions.PathEngineExceptionExceptionFHIRLexer.FHIRLexerException
-
parse
public ExpressionNode parse(FHIRLexer lexer) throws FHIRLexer.FHIRLexerException
Parse a path that is part of some other syntax- Returns:
- Throws:
org.hl7.fhir.exceptions.PathEngineExceptionExceptionFHIRLexer.FHIRLexerException
-
check
public TypeDetails check(Object appContext, String resourceType, String context, ExpressionNode expr) throws FHIRLexer.FHIRLexerException, org.hl7.fhir.exceptions.PathEngineException, org.hl7.fhir.exceptions.DefinitionException
check that paths referred to in the ExpressionNode are valid xPathStartsWithValueRef is a hack work around for the fact that FHIR Path sometimes needs a different starting point than the xpath returns a list of the possible types that might be returned by executing the ExpressionNode against a particular context- Parameters:
context- - the logical type against which this path is applied- Throws:
org.hl7.fhir.exceptions.DefinitionExceptionorg.hl7.fhir.exceptions.PathEngineExceptionFHIRLexer.FHIRLexerException
-
check
public TypeDetails check(Object appContext, StructureDefinition sd, String context, ExpressionNode expr) throws FHIRLexer.FHIRLexerException, org.hl7.fhir.exceptions.PathEngineException, org.hl7.fhir.exceptions.DefinitionException
- Throws:
FHIRLexer.FHIRLexerExceptionorg.hl7.fhir.exceptions.PathEngineExceptionorg.hl7.fhir.exceptions.DefinitionException
-
check
public TypeDetails check(Object appContext, StructureDefinition sd, ExpressionNode expr) throws FHIRLexer.FHIRLexerException, org.hl7.fhir.exceptions.PathEngineException, org.hl7.fhir.exceptions.DefinitionException
- Throws:
FHIRLexer.FHIRLexerExceptionorg.hl7.fhir.exceptions.PathEngineExceptionorg.hl7.fhir.exceptions.DefinitionException
-
check
public TypeDetails check(Object appContext, String resourceType, String context, String expr) throws FHIRLexer.FHIRLexerException, org.hl7.fhir.exceptions.PathEngineException, org.hl7.fhir.exceptions.DefinitionException
- Throws:
FHIRLexer.FHIRLexerExceptionorg.hl7.fhir.exceptions.PathEngineExceptionorg.hl7.fhir.exceptions.DefinitionException
-
evaluate
public List<Base> evaluate(Base base, ExpressionNode ExpressionNode) throws org.hl7.fhir.exceptions.FHIRException
evaluate a path and return the matching elements- Parameters:
base- - the object against which the path is being evaluatedExpressionNode- - the parsed ExpressionNode statement to use- Returns:
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
evaluate
public List<Base> evaluate(Base base, String path) throws org.hl7.fhir.exceptions.FHIRException
evaluate a path and return the matching elements- Parameters:
base- - the object against which the path is being evaluatedpath- - the FHIR Path statement to use- Returns:
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
evaluate
public List<Base> evaluate(Object appContext, Resource focusResource, Resource rootResource, Base base, ExpressionNode ExpressionNode) throws org.hl7.fhir.exceptions.FHIRException
evaluate a path and return the matching elements- Parameters:
base- - the object against which the path is being evaluatedExpressionNode- - the parsed ExpressionNode statement to use- Returns:
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
evaluate
public List<Base> evaluate(Object appContext, Base focusResource, Base rootResource, Base base, ExpressionNode expressionNode) throws org.hl7.fhir.exceptions.FHIRException
evaluate a path and return the matching elements- Parameters:
base- - the object against which the path is being evaluatedexpressionNode- - the parsed ExpressionNode statement to use- Returns:
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
evaluate
public List<Base> evaluate(Object appContext, Resource focusResource, Resource rootResource, Base base, String path) throws org.hl7.fhir.exceptions.FHIRException
evaluate a path and return the matching elements- Parameters:
base- - the object against which the path is being evaluatedpath- - the FHIR Path statement to use- Returns:
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
evaluateToBoolean
public boolean evaluateToBoolean(Resource focusResource, Resource rootResource, Base base, String path) throws org.hl7.fhir.exceptions.FHIRException
evaluate a path and return true or false (e.g. for an invariant)- Parameters:
base- - the object against which the path is being evaluatedpath- - the FHIR Path statement to use- Returns:
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
evaluateToBoolean
public boolean evaluateToBoolean(Resource focusResource, Resource rootResource, Base base, ExpressionNode node) throws org.hl7.fhir.exceptions.FHIRException
evaluate a path and return true or false (e.g. for an invariant)- Parameters:
base- - the object against which the path is being evaluated- Returns:
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
evaluateToBoolean
public boolean evaluateToBoolean(Object appInfo, Resource focusResource, Resource rootResource, Base base, ExpressionNode node) throws org.hl7.fhir.exceptions.FHIRException
evaluate a path and return true or false (e.g. for an invariant)- Parameters:
appInfo- - application contextbase- - the object against which the path is being evaluated- Returns:
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
evaluateToBoolean
public boolean evaluateToBoolean(Object appInfo, Base focusResource, Base rootResource, Base base, ExpressionNode node) throws org.hl7.fhir.exceptions.FHIRException
evaluate a path and return true or false (e.g. for an invariant)- Parameters:
base- - the object against which the path is being evaluated- Returns:
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
evaluateToString
public String evaluateToString(Base base, String path) throws org.hl7.fhir.exceptions.FHIRException
evaluate a path and a string containing the outcome (for display)- Parameters:
base- - the object against which the path is being evaluatedpath- - the FHIR Path statement to use- Returns:
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
evaluateToString
public String evaluateToString(Object appInfo, Base focusResource, Base rootResource, Base base, ExpressionNode node) throws org.hl7.fhir.exceptions.FHIRException
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
convertToString
public String convertToString(List<Base> items)
worker routine for converting a set of objects to a string representation- Parameters:
items- - result from @evaluate- Returns:
-
convertToString
public String convertToString(Base item)
-
convertToBoolean
public boolean convertToBoolean(List<Base> items)
worker routine for converting a set of objects to a boolean representation (for invariants)- Parameters:
items- - result from @evaluate- Returns:
-
bytesToHex
public static String bytesToHex(byte[] bytes)
-
hexStringToByteArray
public static byte[] hexStringToByteArray(String s)
-
parseQuantityString
public Quantity parseQuantityString(String s)
-
hasLog
public boolean hasLog()
-
evaluateDefinition
public FHIRPathEngine.TypedElementDefinition evaluateDefinition(ExpressionNode expr, StructureDefinition profile, FHIRPathEngine.TypedElementDefinition element, StructureDefinition source) throws org.hl7.fhir.exceptions.DefinitionException
given an element definition in a profile, what element contains the differentiating fixed for the element, given the differentiating expresssion. The expression is only allowed to use a subset of FHIRPath- Parameters:
profile-element-- Returns:
- Throws:
org.hl7.fhir.exceptions.PathEngineExceptionorg.hl7.fhir.exceptions.DefinitionException
-
getTerminologyServiceOptions
public org.hl7.fhir.utilities.validation.ValidationOptions getTerminologyServiceOptions()
-
getWorker
public IWorkerContext getWorker()
-
isAllowPolymorphicNames
public boolean isAllowPolymorphicNames()
-
setAllowPolymorphicNames
public void setAllowPolymorphicNames(boolean allowPolymorphicNames)
-
-