Package org.opencds.cqf.cql.engine.model
Interface ModelResolver
- All Known Subinterfaces:
DataProvider
- All Known Implementing Classes:
BaseModelResolver,CompositeDataProvider,SystemDataProvider
public interface ModelResolver
A ModelResolver provides support for mapping a logical model (e.g. QDM or FHIR)
onto a Java implementation of that model. Different implementations of the same
model might map to different implementation schemes with the simplest example
being classes in different package names, but also possibly with different property
naming schemes, etc.
-
Method Summary
Modifier and TypeMethodDescriptionCast the specified value to the specified type.createInstance(String typeName) Create an instance of the model object that corresponds to the specified type.getContextPath(String contextType, String targetType) Get the path expression that expresses the relationship between thetargetTypeand the givencontextType.Deprecated.Use getPackageNames() insteadReturn the package names of Java objects supported by this modelCheck whether or not a specified value instance is of the specified type.objectEqual(Object left, Object right) Compare two objects for equalityobjectEquivalent(Object left, Object right) Compare two objects for equivalenceresolvePath(Object target, String path) Resolve the provided path expression for the provided target.Class<?>resolveType(Object value) Resolve the Java class that corresponds to the given model object instance.Class<?>resolveType(String typeName) Resolve the Java class that corresponds to the given model typevoidsetPackageName(String packageName) Deprecated.Use setPackageNames#String insteaddefault voidsetPackageNames(List<String> packageNames) Set the package names of Java objects supported by this modelvoidSet the value of a particular property on the given model object.
-
Method Details
-
getPackageName
Deprecated.Use getPackageNames() instead -
setPackageName
Deprecated.Use setPackageNames#String instead -
getPackageNames
Return the package names of Java objects supported by this model- Returns:
- list of Java package names for model objects that support this model.
-
setPackageNames
Set the package names of Java objects supported by this model- Parameters:
packageNames- list of Java package names for model objects that support this model.
-
resolvePath
Resolve the provided path expression for the provided target. Paths can be things like simple dotted property notation (e.g. Patient.id) or more complex things like list indexed property expressions (e.g. Patient.name[0].given). The exact details are configued in the model definition and passed to the ELM file during CQL to ELM translation.- Returns:
- result of the provided expression. Null is expected whenever a path doesn't exist on the target.
-
getContextPath
Get the path expression that expresses the relationship between thetargetTypeand the givencontextType. For example, in a FHIR model, with context typePatientand targetType Condition, the resulting path issubjectbecause that is the model property on the Condition object that links the Condition to the Patient. -
resolveType
Resolve the Java class that corresponds to the given model type- Parameters:
typeName- Model type name. In the ELM, model objects are namespaced (e.g. FHIR.Patient), but the namespace is removed prior to calling this method, so the input would just be Patient.- Returns:
- Class object that represents the specified model type
-
resolveType
Resolve the Java class that corresponds to the given model object instance.- Parameters:
value- Object instance- Returns:
- Class object that represents the specified value
-
is
Check whether or not a specified value instance is of the specified type.- Parameters:
value-type-- Returns:
- true when the value is of the specified type, otherwise false.
-
as
Cast the specified value to the specified type. When type conversion is not possible, null should be returned unless the isStrict flag is set to true wherein an Exception will be thrown.- Parameters:
value- model object instancetype- type to which the value should be caseisStrict- flag indicating how to handle invalid type conversion- Returns:
- the result of the value conversion or null if conversion is not possible.
-
createInstance
Create an instance of the model object that corresponds to the specified type.- Parameters:
typeName- Model type to create- Returns:
- new instance of the specified model type
-
setValue
Set the value of a particular property on the given model object.- Parameters:
target- model objectpath- path to the property that will be setvalue- value to set to the property indicated by the path expression
-
objectEqual
Compare two objects for equality- Parameters:
left- left hand side of the equality expressionright- right hand side of the equality expression- Returns:
- flag indicating whether the objects are equal
-
objectEquivalent
Compare two objects for equivalence- Parameters:
left- left hand side of the equivalence expressionright- right hand side of the equivalence expression- Returns:
- flag indicating whether the objects are equal
-