use of com.ibm.cohort.cql.evaluation.parameters.BooleanParameter in project quality-measure-and-cohort-service by Alvearie.
the class MeasureEvaluatorTest method not_in_denominator___caregaps_evaluated_correctly.
@Test
public void not_in_denominator___caregaps_evaluated_correctly() throws Exception {
Map<String, Parameter> parameters = new HashMap<>();
parameters.put("InDenominator", new BooleanParameter(false));
expectationsByPopulationType.put(MeasurePopulationType.DENOMINATOR, 0);
Map<String, Integer> expectationsByCareGap = new HashMap<>();
expectationsByCareGap.put("CareGap1", 0);
expectationsByCareGap.put("CareGap2", 0);
runCareGapTest(parameters, expectationsByCareGap);
}
use of com.ibm.cohort.cql.evaluation.parameters.BooleanParameter in project quality-measure-and-cohort-service by Alvearie.
the class MeasureEvaluatorTest method in_one_initial_population_for_two_measures___two_measure_reports_returned.
@Test
public void in_one_initial_population_for_two_measures___two_measure_reports_returned() throws Exception {
CapabilityStatement metadata = getCapabilityStatement();
mockFhirResourceRetrieval("/metadata?_format=json", metadata);
Patient patient = getPatient("123", AdministrativeGender.MALE, "1970-10-10");
mockFhirResourceRetrieval(patient);
Library library = mockLibraryRetrieval("TestDummyPopulations", DEFAULT_VERSION, "cql/fhir-measure/test-dummy-populations.cql");
String measure1Name = "ProportionMeasureName1";
Measure measure1 = getCareGapMeasure(measure1Name, library, expressionsByPopulationType, "CareGap1", "CareGap2");
mockFhirResourceRetrieval(measure1);
String measure2Name = "ProportionMeasureName2";
Measure measure2 = getCareGapMeasure(measure2Name, library, expressionsByPopulationType, "CareGap1", "CareGap2");
mockFhirResourceRetrieval(measure2);
Map<String, Parameter> passingParameters = new HashMap<>();
passingParameters.put("InInitialPopulation", new BooleanParameter(true));
Map<String, Parameter> failingParameters = new HashMap<>();
failingParameters.put("InInitialPopulation", new BooleanParameter(false));
List<MeasureContext> measureContexts = new ArrayList<>();
measureContexts.add(new MeasureContext(measure1.getId(), passingParameters));
measureContexts.add(new MeasureContext(measure2.getId(), failingParameters));
List<MeasureReport> measureReports = evaluator.evaluatePatientMeasures(patient.getId(), measureContexts);
assertEquals(2, measureReports.size());
// Make sure reports have measure references with meta version included
assertEquals("Measure/" + measure1Name + "/_history/" + MeasureTestBase.MEASURE_META_VERSION_ID, measureReports.get(0).getMeasure());
assertEquals("Measure/" + measure2Name + "/_history/" + MeasureTestBase.MEASURE_META_VERSION_ID, measureReports.get(1).getMeasure());
}
use of com.ibm.cohort.cql.evaluation.parameters.BooleanParameter in project quality-measure-and-cohort-service by Alvearie.
the class MeasureEvaluatorTest method in_numerator_and_numerator_exclusions___caregaps_evaluated_correctly.
@Test
public void in_numerator_and_numerator_exclusions___caregaps_evaluated_correctly() throws Exception {
Map<String, Parameter> parameters = new HashMap<>();
parameters.put("InNumerator", new BooleanParameter(true));
parameters.put("InNumeratorExclusion", new BooleanParameter(true));
expectationsByPopulationType.put(MeasurePopulationType.NUMERATOR, 0);
expectationsByPopulationType.put(MeasurePopulationType.NUMERATOREXCLUSION, 1);
Map<String, Integer> expectationsByCareGap = new HashMap<>();
expectationsByCareGap.put("CareGap1", 0);
expectationsByCareGap.put("CareGap2", 1);
runCareGapTest(parameters, expectationsByCareGap);
}
use of com.ibm.cohort.cql.evaluation.parameters.BooleanParameter in project quality-measure-and-cohort-service by Alvearie.
the class MeasureEvaluatorTest method in_denominator_and_denominator_exclusions___caregaps_evaluated_correctly.
@Test
public void in_denominator_and_denominator_exclusions___caregaps_evaluated_correctly() throws Exception {
Map<String, Parameter> parameters = new HashMap<>();
parameters.put("InDenominator", new BooleanParameter(true));
parameters.put("InDenominatorExclusion", new BooleanParameter(true));
expectationsByPopulationType.put(MeasurePopulationType.DENOMINATOR, 0);
expectationsByPopulationType.put(MeasurePopulationType.DENOMINATOREXCLUSION, 1);
Map<String, Integer> expectationsByCareGap = new HashMap<>();
expectationsByCareGap.put("CareGap1", 0);
expectationsByCareGap.put("CareGap2", 0);
runCareGapTest(parameters, expectationsByCareGap);
}
use of com.ibm.cohort.cql.evaluation.parameters.BooleanParameter in project quality-measure-and-cohort-service by Alvearie.
the class MeasureEvaluatorTest method measure_report_generated___named_parameters_on_measure_report.
@Test
public void measure_report_generated___named_parameters_on_measure_report() throws Exception {
CapabilityStatement metadata = getCapabilityStatement();
mockFhirResourceRetrieval("/metadata?_format=json", metadata);
Patient patient = getPatient("123", AdministrativeGender.MALE, "1970-10-10");
mockFhirResourceRetrieval(patient);
Library library = mockLibraryRetrieval("TestDummyPopulations", DEFAULT_VERSION, "cql/fhir-measure/test-dummy-populations.xml", ELM_MIME_TYPE);
Measure measure = getCohortMeasure("CohortMeasureName", library, INITIAL_POPULATION);
mockFhirResourceRetrieval(measure);
Map<String, Parameter> parameterMap = new HashMap<>();
parameterMap.put("integerParam", new IntegerParameter(1));
parameterMap.put("decimalParam", new DecimalParameter("1.0"));
parameterMap.put("stringParam", new StringParameter("1"));
parameterMap.put("booleanParam", new BooleanParameter(false));
parameterMap.put("datetimeParam", new DatetimeParameter("2020-01-01"));
parameterMap.put("dateParam", new DateParameter("2020-01-01"));
parameterMap.put("timeParam", new TimeParameter("01:00:00"));
parameterMap.put("quantityParam", new QuantityParameter("1.0", "ml"));
parameterMap.put("ratioParam", new RatioParameter(new QuantityParameter("1.0", "ml"), new QuantityParameter("2.0", "ml")));
parameterMap.put("codeParam", new CodeParameter("1", "2", "3", "4"));
parameterMap.put("conceptParam", new ConceptParameter("1", new CodeParameter("1", "2", "3", "4")));
parameterMap.put("datetimeIntervalParam", new IntervalParameter(new DatetimeParameter("2020-01-01"), true, new DatetimeParameter("2021-01-01"), true));
parameterMap.put("quantityIntervalParam", new IntervalParameter(new QuantityParameter("1.0", "ml"), true, new QuantityParameter("2.0", "ml"), true));
MeasureReport report = evaluator.evaluatePatientMeasure(measure.getId(), patient.getId(), parameterMap);
assertNotNull(report);
List<String> parameterNames = report.getExtension().stream().filter(x -> x.getUrl().equals(MEASURE_PARAMETER_VALUE_URL)).map(x -> (ParameterDefinition) x.getValue()).map(ParameterDefinition::getName).collect(Collectors.toList());
// Expected parameters are the ones listed above, plus the special parameters
// measurement period and product line
assertEquals(parameterMap.size() + 2, parameterNames.size());
assertTrue(parameterNames.containsAll(parameterMap.keySet()));
assertTrue(parameterNames.contains(CDMConstants.MEASUREMENT_PERIOD));
assertTrue(parameterNames.contains(CDMConstants.PRODUCT_LINE));
}
Aggregations