use of org.hl7.fhir.r4b.model.Library in project cqf-ruler by DBCG.
the class CollectDataProviderIT method testCollectData.
@Test
public void testCollectData() {
// Create test Measure
String cql = CqlBuilder.newCqlLibrary("4.0.1").addExpression("Initial Population", "exists([Observation])").build();
Library lib = Libraries.library(cql);
Measure m = MeasureBuilder.newCohortMeasure(lib).build();
this.update(lib);
this.update(m);
// Create test data
Patient john = Patients.john_doe();
this.create(john);
Observation obs = newResource(Observation.class).setSubject(new Reference(john));
this.create(obs);
Encounter enc = newResource(Encounter.class).setSubject(new Reference(john));
this.create(enc);
// Submit it
Parameters results = collectDataProvider.collectData(new SystemRequestDetails(), m.getIdElement(), "2019-01-01", "2019-12-31", Ids.simple(john), null, null);
List<ParametersParameterComponent> resources = org.opencds.cqf.ruler.utility.r4.Parameters.getPartsByName(results, "resource");
assertEquals(1, resources.size());
assertEquals("Observation", resources.get(0).getResource().fhirType());
List<ParametersParameterComponent> reports = org.opencds.cqf.ruler.utility.r4.Parameters.getPartsByName(results, "measureReport");
assertEquals(1, reports.size());
assertEquals("MeasureReport", reports.get(0).getResource().fhirType());
}
use of org.hl7.fhir.r4b.model.Library in project cqf-ruler by DBCG.
the class DataOperationProviderIT method testR4MeasureDataRequirementsOperation.
@Test
public void testR4MeasureDataRequirementsOperation() throws IOException {
String bundleAsText = stringFromResource("Exm104FhirR4MeasureBundle.json");
Bundle bundle = (Bundle) getFhirContext().newJsonParser().parseResource(bundleAsText);
getClient().transaction().withBundle(bundle).execute();
Parameters params = new Parameters();
params.addParameter().setName("startPeriod").setValue(new StringType("2019-01-01"));
params.addParameter().setName("endPeriod").setValue(new StringType("2020-01-01"));
Library returnLibrary = getClient().operation().onInstance(new IdType("Measure", "measure-EXM104-8.2.000")).named("$data-requirements").withParameters(params).returnResourceType(Library.class).execute();
assertNotNull(returnLibrary);
}
use of org.hl7.fhir.r4b.model.Library in project cqf-ruler by DBCG.
the class DataOperationProviderIT method testR4LibraryDataRequirementsOperation.
@Test
public void testR4LibraryDataRequirementsOperation() throws IOException {
String bundleAsText = stringFromResource("DataReqLibraryTransactionBundle.json");
Bundle bundle = (Bundle) getFhirContext().newJsonParser().parseResource(bundleAsText);
getClient().transaction().withBundle(bundle).execute();
Parameters params = new Parameters();
params.addParameter().setName("target").setValue(new StringType("dummy"));
Library returnLibrary = getClient().operation().onInstance(new IdType("Library", "LibraryEvaluationTest")).named("$data-requirements").withParameters(params).returnResourceType(Library.class).execute();
assertNotNull(returnLibrary);
}
use of org.hl7.fhir.r4b.model.Library in project cqf-ruler by DBCG.
the class DataOperationsProvider method createLibraryManager.
private LibraryManager createLibraryManager(Library library, RequestDetails theRequestDetails) {
JpaLibraryContentProvider jpaLibraryContentProvider = jpaLibraryContentProviderFactory.create(theRequestDetails);
Bundle libraryBundle = new Bundle();
List<Library> listLib = fetchDependencyLibraries(library, theRequestDetails);
listLib.add(library);
listLib.forEach(lib -> {
Bundle.BundleEntryComponent component = new Bundle.BundleEntryComponent();
component.setResource(lib);
libraryBundle.addEntry(component);
});
LibraryContentProvider bundleLibraryProvider = new BundleFhirLibraryContentProvider(this.getFhirContext(), libraryBundle, adapterFactory, libraryVersionSelector);
List<LibraryContentProvider> sourceProviders = new ArrayList<>(Arrays.asList(bundleLibraryProvider, jpaLibraryContentProvider));
return libraryManagerFactory.create(sourceProviders);
}
use of org.hl7.fhir.r4b.model.Library in project cqf-ruler by DBCG.
the class DataOperationsProvider method visitLibrary.
private void visitLibrary(Library library, List<Library> queue, Map<String, Library> resources, RequestDetails theRequestDetails) {
for (RelatedArtifact relatedArtifact : library.getRelatedArtifact()) {
if (relatedArtifact.getType().equals(RelatedArtifact.RelatedArtifactType.DEPENDSON) && relatedArtifact.hasResource()) {
// FHIR R4+, resource is defined as a canonical
String resourceString = relatedArtifact.getResource();
CanonicalParts parts = Canonicals.getParts(resourceString);
if (parts.resourceType().equals("Library")) {
Library lib = search(Library.class, Searches.byCanonical(resourceString), theRequestDetails).firstOrNull();
if (lib != null) {
resources.putIfAbsent(lib.getId(), lib);
queue.add(lib);
}
}
}
}
}
Aggregations