Search in sources :

Example 1 with LibraryManager

use of org.cqframework.cql.cql2elm.LibraryManager in project cqf-ruler by DBCG.

the class DataOperationsProvider method processDataRequirements.

private Library processDataRequirements(Library library, RequestDetails theRequestDetails) {
    LibraryManager libraryManager = createLibraryManager(library, theRequestDetails);
    CqlTranslator translator = translateLibrary(library, libraryManager, theRequestDetails);
    // TODO: Enable passing a capability statement as a parameter to the operation
    return DataRequirements.getModuleDefinitionLibraryR4(libraryManager, translator.getTranslatedLibrary(), Translators.getTranslatorOptions(), searchParameterResolver, jpaTerminologyProviderFactory.create(theRequestDetails), myModelResolver, null);
}
Also used : CqlTranslator(org.cqframework.cql.cql2elm.CqlTranslator) LibraryManager(org.cqframework.cql.cql2elm.LibraryManager)

Example 2 with LibraryManager

use of org.cqframework.cql.cql2elm.LibraryManager in project cqf-ruler by DBCG.

the class CqlBuilder method validate.

private void validate(String cql) {
    ModelManager modelManager = new ModelManager();
    LibraryManager libraryManager = new LibraryManager(modelManager);
    libraryManager.getLibrarySourceLoader().registerProvider(new FhirLibrarySourceProvider());
    CqlTranslator translator;
    try {
        translator = CqlTranslator.fromStream(new ByteArrayInputStream(cql.getBytes()), modelManager, libraryManager);
    } catch (IOException e) {
        throw new CqlTranslatorException("Error validating cql", e);
    }
    if (translator.getErrors().size() > 0) {
        throw new CqlTranslatorException("Error validating cql: " + Translators.errorsToString(translator.getErrors()));
    }
}
Also used : ByteArrayInputStream(java.io.ByteArrayInputStream) CqlTranslator(org.cqframework.cql.cql2elm.CqlTranslator) LibraryManager(org.cqframework.cql.cql2elm.LibraryManager) IOException(java.io.IOException) ModelManager(org.cqframework.cql.cql2elm.ModelManager) FhirLibrarySourceProvider(org.cqframework.cql.cql2elm.FhirLibrarySourceProvider) CqlTranslatorException(org.cqframework.cql.cql2elm.CqlTranslatorException)

Example 3 with LibraryManager

use of org.cqframework.cql.cql2elm.LibraryManager in project quality-measure-and-cohort-service by Alvearie.

the class CQLParameterTests method toLibrary.

public Library toLibrary(String text) throws Exception {
    ModelManager modelManager = new ModelManager();
    LibraryManager libraryManager = new LibraryManager(modelManager);
    CqlTranslator translator = CqlTranslator.fromText(text, modelManager, libraryManager);
    assertEquals(translator.getErrors().toString(), 0, translator.getErrors().size());
    String xml = translator.toXml();
    return CqlLibraryReader.read(new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8)));
}
Also used : ByteArrayInputStream(java.io.ByteArrayInputStream) CqlTranslator(org.cqframework.cql.cql2elm.CqlTranslator) LibraryManager(org.cqframework.cql.cql2elm.LibraryManager) ModelManager(org.cqframework.cql.cql2elm.ModelManager)

Example 4 with LibraryManager

use of org.cqframework.cql.cql2elm.LibraryManager in project quality-measure-and-cohort-service by Alvearie.

the class CqlToElmTranslator method translate.

public CqlTranslationResult translate(CqlLibrary primaryLibrary, CqlLibrarySourceProvider sourceProvider) {
    LibraryBuilder.SignatureLevel signatureLevel = LibraryBuilder.SignatureLevel.None;
    LibraryManager libraryManager = newLibraryManager(sourceProvider);
    Collection<CqlLibrary> dependencies = new ArrayList<>();
    CqlTranslator cqlTranslator = CqlTranslator.fromText(primaryLibrary.getContent(), libraryManager.getModelManager(), libraryManager, /* ucumService= */
    null, CqlTranslatorException.ErrorSeverity.Info, signatureLevel, getOptionsArray());
    if (cqlTranslator.getErrors().size() > 0) {
        throw new CqlTranslatorException("There were errors during cql translation: " + formatMsg(cqlTranslator.getErrors()));
    } else if (cqlTranslator.getExceptions().size() > 0) {
        throw new CqlTranslatorException("There were exceptions during cql translation: " + formatMsg(cqlTranslator.getExceptions()));
    } else if (cqlTranslator.getWarnings().size() > 0) {
        String msg = "There were warnings during cql translation:\n" + cqlTranslator.getWarnings().stream().map(Object::toString).collect(Collectors.joining("\n"));
        LOG.warn(msg);
    }
    CqlLibrary translatedLibrary = new CqlLibrary().setDescriptor(new CqlLibraryDescriptor().setLibraryId(primaryLibrary.getDescriptor().getLibraryId()).setVersion(primaryLibrary.getDescriptor().getVersion()).setFormat(Format.ELM)).setContent(cqlTranslator.toXml());
    try {
        for (TranslatedLibrary tl : libraryManager.getTranslatedLibraries().values()) {
            CqlLibrary library = new CqlLibrary().setDescriptor(new CqlLibraryDescriptor().setLibraryId(tl.getLibrary().getIdentifier().getId()).setVersion(tl.getLibrary().getIdentifier().getVersion()).setFormat(Format.ELM)).setContent(CqlTranslator.convertToXml(tl.getLibrary()));
            dependencies.add(library);
        }
    } catch (JAXBException ex) {
        throw new RuntimeException("ELM serialization failure", ex);
    }
    return new CqlTranslationResult(translatedLibrary, dependencies);
}
Also used : LibraryBuilder(org.cqframework.cql.cql2elm.LibraryBuilder) CqlTranslator(org.cqframework.cql.cql2elm.CqlTranslator) JAXBException(javax.xml.bind.JAXBException) ArrayList(java.util.ArrayList) CqlTranslatorException(org.cqframework.cql.cql2elm.CqlTranslatorException) CqlLibrary(com.ibm.cohort.cql.library.CqlLibrary) TranslatedLibrary(org.cqframework.cql.cql2elm.model.TranslatedLibrary) LibraryManager(org.cqframework.cql.cql2elm.LibraryManager) CqlLibraryDescriptor(com.ibm.cohort.cql.library.CqlLibraryDescriptor)

Example 5 with LibraryManager

use of org.cqframework.cql.cql2elm.LibraryManager in project CRD by HL7-DaVinci.

the class CqlExecution method translateToElm.

public static String translateToElm(String cql, LibrarySourceProvider librarySourceProvider) throws Exception {
    ModelManager modelManager = new ModelManager();
    LibraryManager libraryManager = new LibraryManager(modelManager);
    libraryManager.getLibrarySourceLoader().registerProvider(new FhirLibrarySourceProvider());
    if (librarySourceProvider != null) {
        libraryManager.getLibrarySourceLoader().registerProvider(librarySourceProvider);
    }
    ArrayList<CqlTranslator.Options> options = new ArrayList<>();
    options.add(CqlTranslator.Options.EnableDateRangeOptimization);
    UcumService ucumService = new UcumEssenceService(UcumEssenceService.class.getResourceAsStream("/ucum-essence.xml"));
    CqlTranslator translator = CqlTranslator.fromText(cql, modelManager, libraryManager, ucumService, options.toArray(new CqlTranslator.Options[options.size()]));
    libraryManager.getLibrarySourceLoader().clearProviders();
    if (translator.getErrors().size() > 0) {
        ArrayList<String> errors = new ArrayList<>();
        for (CqlTranslatorException error : translator.getErrors()) {
            TrackBack tb = error.getLocator();
            String lines = tb == null ? "[n/a]" : String.format("[%d:%d, %d:%d]", tb.getStartLine(), tb.getStartChar(), tb.getEndLine(), tb.getEndChar());
            errors.add(lines + error.getMessage());
        }
        throw new IllegalArgumentException(errors.toString());
    }
    return translator.toJson();
}
Also used : CqlTranslator(org.cqframework.cql.cql2elm.CqlTranslator) ArrayList(java.util.ArrayList) ModelManager(org.cqframework.cql.cql2elm.ModelManager) CqlTranslatorException(org.cqframework.cql.cql2elm.CqlTranslatorException) UcumEssenceService(org.fhir.ucum.UcumEssenceService) UcumService(org.fhir.ucum.UcumService) LibraryManager(org.cqframework.cql.cql2elm.LibraryManager) TrackBack(org.cqframework.cql.elm.tracking.TrackBack) FhirLibrarySourceProvider(org.cqframework.cql.cql2elm.FhirLibrarySourceProvider)

Aggregations

LibraryManager (org.cqframework.cql.cql2elm.LibraryManager)26 CqlTranslator (org.cqframework.cql.cql2elm.CqlTranslator)24 ModelManager (org.cqframework.cql.cql2elm.ModelManager)19 BeforeTest (org.testng.annotations.BeforeTest)16 CqlTranslatorException (org.cqframework.cql.cql2elm.CqlTranslatorException)3 ByteArrayInputStream (java.io.ByteArrayInputStream)2 ArrayList (java.util.ArrayList)2 FhirLibrarySourceProvider (org.cqframework.cql.cql2elm.FhirLibrarySourceProvider)2 ExpressionDef (org.hl7.elm.r1.ExpressionDef)2 Library (org.hl7.elm.r1.Library)2 FhirContext (ca.uhn.fhir.context.FhirContext)1 CqlLibrary (com.ibm.cohort.cql.library.CqlLibrary)1 CqlLibraryDescriptor (com.ibm.cohort.cql.library.CqlLibraryDescriptor)1 IOException (java.io.IOException)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 JAXBException (javax.xml.bind.JAXBException)1 LibraryBuilder (org.cqframework.cql.cql2elm.LibraryBuilder)1 TranslatedLibrary (org.cqframework.cql.cql2elm.model.TranslatedLibrary)1 Library (org.cqframework.cql.elm.execution.Library)1