Package com.ibm.fhir.operation.cpg
Class AbstractCqlOperation
- java.lang.Object
-
- com.ibm.fhir.server.spi.operation.AbstractOperation
-
- com.ibm.fhir.operation.cpg.AbstractCqlOperation
-
- All Implemented Interfaces:
FHIROperation
- Direct Known Subclasses:
CqlOperation
,LibraryEvaluateOperation
public abstract class AbstractCqlOperation extends AbstractOperation
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
PARAM_IN_CONTENT_ENDPOINT
static java.lang.String
PARAM_IN_DATA
static java.lang.String
PARAM_IN_DATA_ENDPOINT
static java.lang.String
PARAM_IN_DEBUG
static java.lang.String
PARAM_IN_EXPRESSION
static java.lang.String
PARAM_IN_PARAMETERS
static java.lang.String
PARAM_IN_PREFETCH_DATA
static java.lang.String
PARAM_IN_SUBJECT
static java.lang.String
PARAM_IN_TERMINOLOGY_ENDPOINT
static java.lang.String
PARAM_IN_USE_SERVER_DATA
static java.lang.String
PARAM_OUT_DEBUG_RESULT
static java.lang.String
PARAM_OUT_RETURN
-
Fields inherited from class com.ibm.fhir.server.spi.operation.AbstractOperation
definition
-
-
Constructor Summary
Constructors Constructor Description AbstractCqlOperation()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected OperationOutcome.Issue
checkUnsupportedParameter(ParameterMap paramMap, java.lang.String paramName)
Check for a single unsupported parameter by nameprotected void
checkUnsupportedParameters(ParameterMap paramMap)
Check if the user provided any currently unsupported operation parameters.protected org.opencds.cqf.cql.engine.execution.LibraryLoader
createLibraryLoader(java.util.List<Library> libraries)
Create a CQL Library loader for the content of the provided FHIR Library resourcesprotected Parameters
doEvaluation(FHIRResourceHelpers resourceHelper, ParameterMap paramMap, SearchHelper searchHelper, Library primaryLibrary)
Evaluate the requested CQL from the provided Library resource.protected Parameters
doEvaluation(FHIRResourceHelpers resourceHelper, ParameterMap paramMap, SearchHelper searchHelper, java.util.List<Library> libraries)
Evaluate the requested CQL from the provided Library resource.protected org.apache.commons.lang3.tuple.Pair<java.lang.String,java.lang.Object>
getCqlContext(ParameterMap paramMap)
Retrieve subject parameter from the operation inputprotected org.apache.commons.lang3.tuple.Pair<java.lang.String,java.lang.Object>
getCqlContext(Parameters.Parameter subjectParam)
Retrieve subject parameter from the operation inputprotected java.util.Map<java.lang.String,java.lang.Object>
getCqlEngineParameters(ParameterConverter converter, Parameters.Parameter parametersParam)
Retrieve CQL parameters data from the operation input.protected abstract java.util.Set<java.lang.String>
getCqlExpressionsToEvaluate(ParameterMap paramMap)
Get the expression names to evaluate in the primary libraryprotected java.util.Map<java.lang.String,java.lang.Object>
getCqlParameters(ParameterConverter converter, ParameterMap paramMap)
Retrieve CQL parameters data from the operation input.protected org.opencds.cqf.cql.engine.debug.DebugMap
getDebugMap(ParameterMap paramMap)
Create a CQL DebugMap object based on the configuation in the operation inputprotected void
throwOperationException(java.lang.Exception ex)
Construct a FHIROperationExcepiton from the provided exception.-
Methods inherited from class com.ibm.fhir.server.spi.operation.AbstractOperation
buildExceptionWithIssue, buildExceptionWithIssue, buildOperationDefinition, countParameters, doInvoke, findOpDefParameter, getDefinition, getName, getParameter, getParameterDefinitions, getParameters, getResourceTypeNames, invoke, isAbstractResourceTypesDisallowed, isAdditionalMethodAllowed, validateInputParameters, validateOperationContext, validateOutputParameters, validateParameters
-
-
-
-
Field Detail
-
PARAM_IN_EXPRESSION
public static final java.lang.String PARAM_IN_EXPRESSION
- See Also:
- Constant Field Values
-
PARAM_IN_PARAMETERS
public static final java.lang.String PARAM_IN_PARAMETERS
- See Also:
- Constant Field Values
-
PARAM_IN_SUBJECT
public static final java.lang.String PARAM_IN_SUBJECT
- See Also:
- Constant Field Values
-
PARAM_IN_DEBUG
public static final java.lang.String PARAM_IN_DEBUG
- See Also:
- Constant Field Values
-
PARAM_OUT_RETURN
public static final java.lang.String PARAM_OUT_RETURN
- See Also:
- Constant Field Values
-
PARAM_OUT_DEBUG_RESULT
public static final java.lang.String PARAM_OUT_DEBUG_RESULT
- See Also:
- Constant Field Values
-
PARAM_IN_USE_SERVER_DATA
public static final java.lang.String PARAM_IN_USE_SERVER_DATA
- See Also:
- Constant Field Values
-
PARAM_IN_DATA
public static final java.lang.String PARAM_IN_DATA
- See Also:
- Constant Field Values
-
PARAM_IN_PREFETCH_DATA
public static final java.lang.String PARAM_IN_PREFETCH_DATA
- See Also:
- Constant Field Values
-
PARAM_IN_DATA_ENDPOINT
public static final java.lang.String PARAM_IN_DATA_ENDPOINT
- See Also:
- Constant Field Values
-
PARAM_IN_CONTENT_ENDPOINT
public static final java.lang.String PARAM_IN_CONTENT_ENDPOINT
- See Also:
- Constant Field Values
-
PARAM_IN_TERMINOLOGY_ENDPOINT
public static final java.lang.String PARAM_IN_TERMINOLOGY_ENDPOINT
- See Also:
- Constant Field Values
-
-
Method Detail
-
checkUnsupportedParameters
protected void checkUnsupportedParameters(ParameterMap paramMap) throws FHIROperationException
Check if the user provided any currently unsupported operation parameters.- Parameters:
paramMap
- Operation input parameters- Throws:
FHIROperationException
- when one or more unsupported parameters are found
-
checkUnsupportedParameter
protected OperationOutcome.Issue checkUnsupportedParameter(ParameterMap paramMap, java.lang.String paramName)
Check for a single unsupported parameter by name- Parameters:
paramMap
- Operation input parametersparamName
- Name of unsupported parameter- Returns:
- FHIR Issue data describing the error or null if no such parameter is found.
-
doEvaluation
protected Parameters doEvaluation(FHIRResourceHelpers resourceHelper, ParameterMap paramMap, SearchHelper searchHelper, Library primaryLibrary)
Evaluate the requested CQL from the provided Library resource.- Parameters:
resourceHelper
- Resource operation provider for loading related Library resourcesparamMap
- Parameters object that describes the operation to performprimaryLibrary
- Library resource that is the entry point for the evaluation- Returns:
- Parameters describing the evaluation result
-
doEvaluation
protected Parameters doEvaluation(FHIRResourceHelpers resourceHelper, ParameterMap paramMap, SearchHelper searchHelper, java.util.List<Library> libraries)
Evaluate the requested CQL from the provided Library resource.- Parameters:
resourceHelper
- Resource operation provider for loading related Library resourcesparamMap
- Parameters object that describes the operation to performprimaryLibrary
- Library resource that is the entry point for the evaluationsearchHelper
- A helper class for working with FHIR search parameterslibraries
- List of all necessary library resources. The first entry in the list is the primary library.- Returns:
- Parameters describing the evaluation result
-
getCqlContext
protected org.apache.commons.lang3.tuple.Pair<java.lang.String,java.lang.Object> getCqlContext(ParameterMap paramMap)
Retrieve subject parameter from the operation input- Parameters:
paramMap
- operation input- Returns:
- Pair of context name and value
-
getCqlContext
protected org.apache.commons.lang3.tuple.Pair<java.lang.String,java.lang.Object> getCqlContext(Parameters.Parameter subjectParam)
Retrieve subject parameter from the operation input- Parameters:
paramMap
- operation input- Returns:
- Pair of context name and value
-
getCqlParameters
protected java.util.Map<java.lang.String,java.lang.Object> getCqlParameters(ParameterConverter converter, ParameterMap paramMap)
Retrieve CQL parameters data from the operation input. FHIR data types are automatically converted to CQL System data types.- Parameters:
converter
- Converter logic for transforming FHIR data types to CQL input parameters.paramMap
- operation input- Returns:
- Map of parameter name to parameter value where value objects are types in the CQL typesystem.
-
getCqlEngineParameters
protected java.util.Map<java.lang.String,java.lang.Object> getCqlEngineParameters(ParameterConverter converter, Parameters.Parameter parametersParam)
Retrieve CQL parameters data from the operation input. FHIR data types are automatically converted to CQL System data types.- Parameters:
converter
- Converter logic for transforming FHIR data types to CQL input parameters.parametersParam
- operation input- Returns:
- Map of parameter name to parameter value where value objects are types in the CQL typesystem.
-
getCqlExpressionsToEvaluate
protected abstract java.util.Set<java.lang.String> getCqlExpressionsToEvaluate(ParameterMap paramMap)
Get the expression names to evaluate in the primary library- Parameters:
paramMap
- operation input- Returns:
- expression names to evaluate
-
createLibraryLoader
protected org.opencds.cqf.cql.engine.execution.LibraryLoader createLibraryLoader(java.util.List<Library> libraries)
Create a CQL Library loader for the content of the provided FHIR Library resources- Parameters:
libraries
- FHIR Library resources containing CQL and/or ELM content- Returns:
- CQL Engine LibraryLoader
-
getDebugMap
protected org.opencds.cqf.cql.engine.debug.DebugMap getDebugMap(ParameterMap paramMap)
Create a CQL DebugMap object based on the configuation in the operation input- Parameters:
paramMap
- operation input- Returns:
- DebugMap
-
throwOperationException
protected void throwOperationException(java.lang.Exception ex) throws FHIROperationException
Construct a FHIROperationExcepiton from the provided exception. This allows commonality of error handling between related operations.- Throws:
FHIROperationException
-
-