use of com.ibm.cohort.cql.library.ProviderBasedLibraryLoader in project quality-measure-and-cohort-service by Alvearie.
the class CqlTranslationIntegrationTest method singleFile_withOptions__translatedSuccessfully.
@Test
public void singleFile_withOptions__translatedSuccessfully() {
CqlLibraryProvider backingLibraryProvider = new ClasspathCqlLibraryProvider("cql.basic");
CqlToElmTranslator translator = new CqlToElmTranslator();
Path modelInfo = Paths.get("src/test/resources/modelinfo/ig-with-target-modelinfo-0.0.1.xml");
translator.registerModelInfo(modelInfo.toFile());
CqlLibraryProvider translatingLibraryProvider = new TranslatingCqlLibraryProvider(backingLibraryProvider, translator, true);
LibraryLoader libraryLoader = new ProviderBasedLibraryLoader(translatingLibraryProvider);
VersionedIdentifier identifier = new VersionedIdentifier().withId("Test").withVersion("1.0.0");
Library library = libraryLoader.load(identifier);
Assert.assertEquals(identifier, library.getIdentifier());
Assert.assertEquals(2, library.getAnnotation().size());
Assert.assertEquals(4, library.getStatements().getDef().size());
}
use of com.ibm.cohort.cql.library.ProviderBasedLibraryLoader in project quality-measure-and-cohort-service by Alvearie.
the class CqlContextFactory method createContext.
/**
* Initialize a CQL context from the values associated with the provided
* CQL Context Key. This encapsulates the set of initializations that are
* static from run to run.
*
* @param contextKey container for stable context settings
* @return initialized CQL Context object
* @throws CqlLibraryDeserializationException if the specified library cannot be loaded
*/
protected Context createContext(ContextCacheKey contextKey) throws CqlLibraryDeserializationException {
LibraryLoader libraryLoader = new ProviderBasedLibraryLoader(contextKey.libraryProvider);
VersionedIdentifier vid = new VersionedIdentifier().withId(contextKey.topLevelLibraryIdentifier.getId()).withVersion(contextKey.topLevelLibraryIdentifier.getVersion());
Library entryPoint = libraryLoader.load(vid);
Context cqlContext;
if (contextKey.evaluationDateTime != null) {
cqlContext = new Context(entryPoint, contextKey.evaluationDateTime, new CqlSystemDataProvider());
} else {
cqlContext = new Context(entryPoint, new CqlSystemDataProvider());
}
cqlContext.registerExternalFunctionProvider(vid, this.externalFunctionProvider);
registerExternalIncludes(cqlContext, cqlContext.getCurrentLibrary());
cqlContext.registerLibraryLoader(libraryLoader);
cqlContext.registerTerminologyProvider(contextKey.terminologyProvider);
if (contextKey.parameters != null) {
Library library = cqlContext.getCurrentLibrary();
for (Map.Entry<String, Parameter> entry : contextKey.parameters.entrySet()) {
Object cqlValue = entry.getValue().toCqlType();
cqlContext.setParameter(library.getLocalId(), entry.getKey(), cqlValue);
}
if (library.getIncludes() != null && library.getIncludes().getDef() != null) {
for (IncludeDef def : library.getIncludes().getDef()) {
String name = def.getLocalIdentifier();
for (Map.Entry<String, Parameter> parameterValue : contextKey.parameters.entrySet()) {
Object cqlValue = parameterValue.getValue().toCqlType();
cqlContext.setParameter(name, parameterValue.getKey(), cqlValue);
}
}
}
}
return cqlContext;
}
Aggregations