use of org.hl7.fhir.dstu3.model.MeasureReport in project cqf-ruler by DBCG.
the class MeasureEvaluateProviderIT method testMeasureEvaluateWithAdditionalData.
@Test
public void testMeasureEvaluateWithAdditionalData() throws Exception {
String mainBundleAsText = stringFromResource("Exm104FhirR4MeasurePartBundle.json");
Bundle bundle = (Bundle) getFhirContext().newJsonParser().parseResource(mainBundleAsText);
getClient().transaction().withBundle(bundle).execute();
String additionalBundleAsText = stringFromResource("Exm104FhirR4MeasureAdditionalData.json");
Bundle additionalData = (Bundle) getFhirContext().newJsonParser().parseResource(additionalBundleAsText);
Parameters params = new Parameters();
params.addParameter().setName("periodStart").setValue(new StringType("2019-01-01"));
params.addParameter().setName("periodEnd").setValue(new StringType("2020-01-01"));
params.addParameter().setName("reportType").setValue(new StringType("subject"));
params.addParameter().setName("subject").setValue(new StringType("Patient/numer-EXM104"));
params.addParameter().setName("lastReceivedOn").setValue(new StringType("2019-12-12"));
params.addParameter().setName("additionalData").setResource(additionalData);
MeasureReport returnMeasureReport = getClient().operation().onInstance(new IdType("Measure", "measure-EXM104-8.2.000")).named("$evaluate-measure").withParameters(params).returnResourceType(MeasureReport.class).execute();
assertNotNull(returnMeasureReport);
}
use of org.hl7.fhir.dstu3.model.MeasureReport in project cqf-ruler by DBCG.
the class MeasureEvaluateProvider method evaluateMeasure.
/**
* Implements the <a href=
* "https://www.hl7.org/fhir/operation-measure-evaluate-measure.html">$evaluate-measure</a>
* operation found in the
* <a href="http://www.hl7.org/fhir/clinicalreasoning-module.html">FHIR Clinical
* Reasoning Module</a>. This implementation aims to be compatible with the CQF
* IG.
*
* @param requestDetails The details (such as tenant) of this request. Usually
* auto-populated HAPI.
* @param theId the Id of the Measure to evaluate
* @param periodStart The start of the reporting period
* @param periodEnd The end of the reporting period
* @param reportType The type of MeasureReport to generate
* @param subject the subject to use for the evaluation
* @param practitioner the practitioner to use for the evaluation
* @param lastReceivedOn the date the results of this measure were last
* received.
* @param productLine the productLine (e.g. Medicare, Medicaid, etc) to use
* for the evaluation. This is a non-standard parameter.
* @param additionalData the data bundle containing additional data
* @return the calculated MeasureReport
*/
// warning for greater than 7 parameters
@SuppressWarnings("squid:S00107")
@Description(shortDefinition = "$evaluate-measure", value = "Implements the <a href=\"https://www.hl7.org/fhir/operation-measure-evaluate-measure.html\">$evaluate-measure</a> operation found in the <a href=\"http://www.hl7.org/fhir/clinicalreasoning-module.html\">FHIR Clinical Reasoning Module</a>. This implementation aims to be compatible with the CQF IG.", example = "Measure/example/$evaluate-measure?subject=Patient/123&periodStart=2019&periodEnd=2020")
@Operation(name = "$evaluate-measure", idempotent = true, type = Measure.class)
public MeasureReport evaluateMeasure(RequestDetails requestDetails, @IdParam IdType theId, @OperationParam(name = "periodStart") String periodStart, @OperationParam(name = "periodEnd") String periodEnd, @OperationParam(name = "reportType") String reportType, @OperationParam(name = "subject") String subject, @OperationParam(name = "practitioner") String practitioner, @OperationParam(name = "lastReceivedOn") String lastReceivedOn, @OperationParam(name = "productLine") String productLine, @OperationParam(name = "additionalData") Bundle additionalData) {
Measure measure = read(theId);
TerminologyProvider terminologyProvider = this.jpaTerminologyProviderFactory.create(requestDetails);
DataProvider dataProvider = this.jpaDataProviderFactory.create(requestDetails, terminologyProvider);
LibraryContentProvider libraryContentProvider = this.libraryContentProviderFactory.create(requestDetails);
FhirDal fhirDal = this.fhirDalFactory.create(requestDetails);
org.opencds.cqf.cql.evaluator.measure.r4.R4MeasureProcessor measureProcessor = new org.opencds.cqf.cql.evaluator.measure.r4.R4MeasureProcessor(null, this.dataProviderFactory, null, null, null, terminologyProvider, libraryContentProvider, dataProvider, fhirDal, null, this.globalLibraryCache);
MeasureReport report = measureProcessor.evaluateMeasure(measure.getUrl(), periodStart, periodEnd, reportType, subject, null, lastReceivedOn, null, null, null, additionalData);
if (productLine != null) {
Extension ext = new Extension();
ext.setUrl("http://hl7.org/fhir/us/cqframework/cqfmeasures/StructureDefinition/cqfm-productLine");
ext.setValue(new StringType(productLine));
report.addExtension(ext);
}
return report;
}
use of org.hl7.fhir.dstu3.model.MeasureReport in project cqf-ruler by DBCG.
the class MeasureEvaluateProviderIT method testMeasureEvaluate.
@Test
public void testMeasureEvaluate() throws Exception {
String bundleAsText = stringFromResource("Exm105Fhir3Measure.json");
Bundle bundle = (Bundle) getFhirContext().newJsonParser().parseResource(bundleAsText);
getClient().transaction().withBundle(bundle).execute();
Parameters params = new Parameters();
params.addParameter().setName("periodStart").setValue(new StringType("2019-01-01"));
params.addParameter().setName("periodEnd").setValue(new StringType("2020-01-01"));
params.addParameter().setName("reportType").setValue(new StringType("individual"));
params.addParameter().setName("subject").setValue(new StringType("Patient/denom-EXM105-FHIR3"));
params.addParameter().setName("lastReceivedOn").setValue(new StringType("2019-12-12"));
MeasureReport returnMeasureReport = getClient().operation().onInstance(new IdType("Measure", "measure-EXM105-FHIR3-8.0.000")).named("$evaluate-measure").withParameters(params).returnResourceType(MeasureReport.class).execute();
assertNotNull(returnMeasureReport);
// System.out.println("Resource:"+this.getFhirContext().newJsonParser().setPrettyPrint(true).encodeResourceToString(returnMeasureReport));
}
use of org.hl7.fhir.dstu3.model.MeasureReport in project cqf-ruler by DBCG.
the class MeasureEvaluateProviderIT method testMeasureEvaluateWithAdditionalData.
@Test
public void testMeasureEvaluateWithAdditionalData() throws Exception {
String mainBundleAsText = stringFromResource("Exm105FhirR3MeasurePartBundle.json");
Bundle bundle = (Bundle) getFhirContext().newJsonParser().parseResource(mainBundleAsText);
getClient().transaction().withBundle(bundle).execute();
String additionalBundleAsText = stringFromResource("Exm105FhirR3MeasureAdditionalData.json");
Bundle additionalData = (Bundle) getFhirContext().newJsonParser().parseResource(additionalBundleAsText);
Parameters params = new Parameters();
params.addParameter().setName("periodStart").setValue(new StringType("2019-01-01"));
params.addParameter().setName("periodEnd").setValue(new StringType("2020-01-01"));
params.addParameter().setName("reportType").setValue(new StringType("individual"));
params.addParameter().setName("subject").setValue(new StringType("Patient/denom-EXM105-FHIR3"));
params.addParameter().setName("lastReceivedOn").setValue(new StringType("2019-12-12"));
params.addParameter().setName("additionalData").setResource(additionalData);
MeasureReport returnMeasureReport = getClient().operation().onInstance(new IdType("Measure", "measure-EXM105-FHIR3-8.0.000")).named("$evaluate-measure").withParameters(params).returnResourceType(MeasureReport.class).execute();
assertNotNull(returnMeasureReport);
}
use of org.hl7.fhir.dstu3.model.MeasureReport in project cqf-ruler by DBCG.
the class SubmitDataProviderIT method testSubmitDataNoId.
@Test
public void testSubmitDataNoId() {
// Create a MR and a resource
MeasureReport mr = newResource(MeasureReport.class).setMeasure(new Reference("Measure/123"));
Observation obs = newResource(Observation.class).setValue(new StringType("ABC"));
// Submit it
mySubmitDataProvider.submitData(new SystemRequestDetails(), new IdType("Measure", "123"), mr, Lists.newArrayList(obs));
// Check if they made it to the db
Observation savedObs = search(Observation.class, Searches.all()).single();
assertNotNull(savedObs);
assertEquals("ABC", savedObs.getValue().primitiveValue());
MeasureReport savedMr = search(MeasureReport.class, Searches.all()).single();
assertNotNull(savedMr);
assertEquals("Measure/123", savedMr.getMeasure().getReference());
}
Aggregations