Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move test code back to cqf-fhir-cr and delete cqf-fhir-cr-test. #638

Draft
wants to merge 10 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 0 additions & 5 deletions cqf-fhir-benchmark/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,6 @@
<artifactId>jmh-core</artifactId>
</dependency>

<dependency>
<groupId>org.opencds.cqf.fhir</groupId>
<artifactId>cqf-fhir-cr-test</artifactId>
<version>3.19.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.skyscreamer</groupId>
<artifactId>jsonassert</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.opencds.cqf.fhir.benchmark;

import org.opencds.cqf.fhir.api.Repository;
import org.opencds.cqf.fhir.cr.activitydefinition.ActivityDefinitionProcessor;
import org.opencds.cqf.fhir.utility.repository.operations.IActivityDefinitionProcessor;
import org.opencds.cqf.fhir.utility.repository.operations.IActivityDefinitionProcessorFactory;

public class ActivityDefinitionProcessorFactory implements IActivityDefinitionProcessorFactory {

@Override
public IActivityDefinitionProcessor create(Repository repository) {
return new ActivityDefinitionProcessor(repository);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
import java.time.ZoneId;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;
import org.opencds.cqf.fhir.benchmark.measure.r4.Measure;
import org.opencds.cqf.fhir.benchmark.measure.r4.Measure.When;
import org.opencds.cqf.fhir.cql.engine.retrieve.RetrieveSettings.SEARCH_FILTER_MODE;
import org.opencds.cqf.fhir.cql.engine.retrieve.RetrieveSettings.TERMINOLOGY_FILTER_MODE;
import org.opencds.cqf.fhir.cql.engine.terminology.TerminologySettings.VALUESET_EXPANSION_MODE;
import org.opencds.cqf.fhir.cr.measure.MeasureEvaluationOptions;
import org.opencds.cqf.fhir.cr.measure.r4.Measure;
import org.opencds.cqf.fhir.cr.measure.r4.Measure.When;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Level;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
import java.util.HashMap;
import java.util.concurrent.TimeUnit;
import org.hl7.fhir.r4.model.Bundle;
import org.opencds.cqf.fhir.benchmark.measure.r4.Measure;
import org.opencds.cqf.fhir.benchmark.measure.r4.Measure.When;
import org.opencds.cqf.fhir.cql.engine.retrieve.RetrieveSettings.SEARCH_FILTER_MODE;
import org.opencds.cqf.fhir.cql.engine.retrieve.RetrieveSettings.TERMINOLOGY_FILTER_MODE;
import org.opencds.cqf.fhir.cql.engine.terminology.TerminologySettings.VALUESET_EXPANSION_MODE;
import org.opencds.cqf.fhir.cr.measure.MeasureEvaluationOptions;
import org.opencds.cqf.fhir.cr.measure.r4.Measure;
import org.opencds.cqf.fhir.cr.measure.r4.Measure.When;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Level;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package org.opencds.cqf.fhir.benchmark;

import static org.opencds.cqf.fhir.cr.plandefinition.TestPlanDefinition.given;
import static org.opencds.cqf.fhir.benchmark.plandefinition.TestPlanDefinition.given;
import static org.opencds.cqf.fhir.utility.r4.Parameters.parameters;
import static org.opencds.cqf.fhir.utility.r4.Parameters.part;

import ca.uhn.fhir.context.FhirContext;
import java.util.concurrent.TimeUnit;
import org.opencds.cqf.fhir.cr.plandefinition.TestPlanDefinition.When;
import org.opencds.cqf.fhir.benchmark.plandefinition.TestPlanDefinition.When;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Level;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package org.opencds.cqf.fhir.benchmark;

import static org.opencds.cqf.fhir.cr.plandefinition.TestPlanDefinition.given;
import static org.opencds.cqf.fhir.benchmark.plandefinition.TestPlanDefinition.given;
import static org.opencds.cqf.fhir.utility.r4.Parameters.parameters;
import static org.opencds.cqf.fhir.utility.r4.Parameters.part;

import ca.uhn.fhir.context.FhirContext;
import java.util.concurrent.TimeUnit;
import org.opencds.cqf.fhir.cr.plandefinition.TestPlanDefinition.When;
import org.opencds.cqf.fhir.benchmark.plandefinition.TestPlanDefinition.When;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Level;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package org.opencds.cqf.fhir.benchmark;

import static org.opencds.cqf.fhir.cr.questionnaire.TestQuestionnaire.given;
import static org.opencds.cqf.fhir.benchmark.questionnaire.TestQuestionnaire.given;
import static org.opencds.cqf.fhir.utility.r4.Parameters.parameters;
import static org.opencds.cqf.fhir.utility.r4.Parameters.stringPart;

import ca.uhn.fhir.context.FhirContext;
import java.util.concurrent.TimeUnit;
import org.hl7.fhir.r4.model.IdType;
import org.opencds.cqf.fhir.cr.questionnaire.TestQuestionnaire.When;
import org.opencds.cqf.fhir.benchmark.questionnaire.TestQuestionnaire.When;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Level;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import java.util.concurrent.TimeUnit;
import org.opencds.cqf.cql.engine.runtime.Code;
import org.opencds.cqf.cql.engine.terminology.ValueSetInfo;
import org.opencds.cqf.fhir.benchmark.measure.r4.Measure;
import org.opencds.cqf.fhir.cql.engine.terminology.RepositoryTerminologyProvider;
import org.opencds.cqf.fhir.cr.measure.r4.Measure;
import org.opencds.cqf.fhir.utility.repository.ig.IgRepository;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Fork;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.opencds.cqf.fhir.benchmark;

import ca.uhn.fhir.context.FhirContext;
import org.opencds.cqf.fhir.utility.repository.operations.RepositoryOperationProvider;

public class TestOperationProvider {
public static RepositoryOperationProvider newProvider(FhirContext fhirContext) {
return new RepositoryOperationProvider(fhirContext, new ActivityDefinitionProcessorFactory(), null, null, null);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package org.opencds.cqf.fhir.benchmark.helpers;

import static org.junit.jupiter.api.Assertions.assertEquals;

import org.hl7.fhir.instance.model.api.IBaseResource;
import org.opencds.cqf.fhir.utility.adapter.IAdapterFactory;
import org.opencds.cqf.fhir.utility.adapter.ILibraryAdapter;

public class DataRequirementsLibrary {
final IBaseResource library;
final ILibraryAdapter libraryAdapter;

public DataRequirementsLibrary(IBaseResource library) {
this.library = library;
libraryAdapter = (ILibraryAdapter) IAdapterFactory.createAdapterForResource(library);
}

public DataRequirementsLibrary hasDataRequirements(int count) {
assertEquals(count, libraryAdapter.getDataRequirement().size());
return this;
}

public IBaseResource getLibrary() {
return library;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package org.opencds.cqf.fhir.benchmark.helpers;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.opencds.cqf.fhir.utility.BundleHelper.getEntry;
import static org.opencds.cqf.fhir.utility.BundleHelper.getEntryResourceFirstRep;

import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.parser.IParser;
import org.hl7.fhir.instance.model.api.IBaseBundle;
import org.hl7.fhir.instance.model.api.IBaseResource;

public class GeneratedPackage {
final IBaseBundle generatedBundle;
final IParser jsonParser;

public GeneratedPackage(IBaseBundle generatedBundle, FhirContext fhirContext) {
this.generatedBundle = generatedBundle;
jsonParser = fhirContext.newJsonParser().setPrettyPrint(true);
}

public GeneratedPackage hasEntry(int count) {
assertEquals(count, getEntry(generatedBundle).size());
return this;
}

public <R extends IBaseResource> GeneratedPackage firstEntryIsType(Class<R> resourceType) {
assertEquals(resourceType, getEntryResourceFirstRep(generatedBundle).getClass());
return this;
}

public IBaseBundle getBundle() {
return generatedBundle;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
package org.opencds.cqf.fhir.benchmark.helpers;

import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.FhirVersionEnum;
import org.hl7.fhir.instance.model.api.IBaseDatatype;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.opencds.cqf.cql.engine.model.ModelResolver;
import org.opencds.cqf.fhir.cql.LibraryEngine;
import org.opencds.cqf.fhir.cr.inputparameters.IInputParameterResolver;
import org.opencds.cqf.fhir.cr.library.evaluate.EvaluateRequest;
import org.opencds.cqf.fhir.cr.questionnaire.generate.GenerateRequest;
import org.opencds.cqf.fhir.cr.questionnaire.populate.PopulateRequest;
import org.opencds.cqf.fhir.cr.questionnaireresponse.extract.ExtractRequest;
import org.opencds.cqf.fhir.utility.Ids;
import org.opencds.cqf.fhir.utility.model.FhirModelResolverCache;

public class RequestHelpers {
public static final String PATIENT_ID = "patientId";
public static final String ENCOUNTER_ID = "encounterId";
public static final String PRACTITIONER_ID = "practitionerId";
public static final String ORGANIZATION_ID = "organizationId";
public static final String PLANDEFINITION_ID = "planDefinitionId";
public static final String PLANDEFINITION_URL = "http://test.fhir.org/fhir/PlanDefinition/";
public static final String PROFILE_ID = "profileId";
public static final String PROFILE_URL = "http://test.fhir.org/fhir/StructureDefinition/";

public static org.opencds.cqf.fhir.cr.plandefinition.apply.ApplyRequest newPDApplyRequestForVersion(
FhirVersionEnum fhirVersion, LibraryEngine libraryEngine) {
return newPDApplyRequestForVersion(fhirVersion, libraryEngine, null, null);
}

public static org.opencds.cqf.fhir.cr.plandefinition.apply.ApplyRequest newPDApplyRequestForVersion(
FhirVersionEnum fhirVersion, LibraryEngine libraryEngine, ModelResolver modelResolver) {
return newPDApplyRequestForVersion(fhirVersion, libraryEngine, modelResolver, null);
}

public static org.opencds.cqf.fhir.cr.plandefinition.apply.ApplyRequest newPDApplyRequestForVersion(
FhirVersionEnum fhirVersion,
LibraryEngine libraryEngine,
ModelResolver modelResolver,
IInputParameterResolver inputParameterResolver) {
var fhirContext = FhirContext.forCached(fhirVersion);
IBaseResource planDefinition = null;
try {
planDefinition = fhirContext
.getResourceDefinition("PlanDefinition")
.newInstance()
.setId(PLANDEFINITION_ID);
} catch (Exception e) {
// Do nothing
}
return newPDApplyRequestForVersion(
fhirVersion, planDefinition, libraryEngine, modelResolver, inputParameterResolver);
}

public static org.opencds.cqf.fhir.cr.plandefinition.apply.ApplyRequest newPDApplyRequestForVersion(
FhirVersionEnum fhirVersion,
IBaseResource planDefinition,
LibraryEngine libraryEngine,
ModelResolver modelResolver,
IInputParameterResolver inputParameterResolver) {
try {
if (modelResolver == null) {
modelResolver = FhirModelResolverCache.resolverForVersion(fhirVersion);
}
var planDefinitionUrl = modelResolver.resolvePath(planDefinition, "url");
if (planDefinitionUrl == null) {
var url = PLANDEFINITION_URL + planDefinition.getIdElement().getIdPart();
IBaseDatatype urlType;
switch (fhirVersion) {
case DSTU3:
urlType = new org.hl7.fhir.dstu3.model.StringType(url);
break;
case R4:
urlType = new org.hl7.fhir.r4.model.CanonicalType(url);
break;
case R5:
urlType = new org.hl7.fhir.r5.model.CanonicalType(url);
break;

default:
urlType = null;
break;
}
modelResolver.setValue(planDefinition, "url", urlType);
}
} catch (Exception e) {
// Do nothing
}
IBaseDatatype userLanguage;
switch (fhirVersion) {
case DSTU3:
userLanguage = new org.hl7.fhir.dstu3.model.CodeableConcept(
new org.hl7.fhir.dstu3.model.Coding("test", "test", "test"));
break;
case R4:
userLanguage = new org.hl7.fhir.r4.model.CodeableConcept(
new org.hl7.fhir.r4.model.Coding("test", "test", "test"));
break;
case R5:
userLanguage = new org.hl7.fhir.r5.model.CodeableConcept(
new org.hl7.fhir.r5.model.Coding("test", "test", "test"));
break;

default:
userLanguage = null;
break;
}
return new org.opencds.cqf.fhir.cr.plandefinition.apply.ApplyRequest(
planDefinition,
Ids.newId(fhirVersion, Ids.ensureIdType(PATIENT_ID, "Patient")),
Ids.newId(fhirVersion, Ids.ensureIdType(PATIENT_ID, "Encounter")),
Ids.newId(fhirVersion, Ids.ensureIdType(PATIENT_ID, "Practitioner")),
Ids.newId(fhirVersion, Ids.ensureIdType(PATIENT_ID, "Organization")),
null,
userLanguage,
null,
null,
null,
null,
true,
null,
null,
libraryEngine,
modelResolver,
inputParameterResolver);
}

public static GenerateRequest newGenerateRequestForVersion(
FhirVersionEnum fhirVersion, LibraryEngine libraryEngine) {
IBaseResource profile = null;
try {
var fhirContext = FhirContext.forCached(fhirVersion);
profile = fhirContext
.getResourceDefinition("StructureDefinition")
.newInstance()
.setId(PROFILE_ID);
} catch (Exception e) {
// Do nothing
}
return newGenerateRequestForVersion(fhirVersion, profile, libraryEngine);
}

public static GenerateRequest newGenerateRequestForVersion(
FhirVersionEnum fhirVersion, IBaseResource profile, LibraryEngine libraryEngine) {
return new GenerateRequest(
profile, false, true, libraryEngine, FhirModelResolverCache.resolverForVersion(fhirVersion));
}

public static PopulateRequest newPopulateRequestForVersion(
FhirVersionEnum fhirVersion, LibraryEngine libraryEngine, IBaseResource questionnaire) {
return new PopulateRequest(
questionnaire,
Ids.newId(fhirVersion, Ids.ensureIdType(PATIENT_ID, "Patient")),
null,
null,
null,
null,
true,
libraryEngine,
FhirModelResolverCache.resolverForVersion(fhirVersion));
}

public static ExtractRequest newExtractRequestForVersion(
FhirVersionEnum fhirVersion,
LibraryEngine libraryEngine,
IBaseResource questionnaireResponse,
IBaseResource questionnaire) {
return new ExtractRequest(
questionnaireResponse,
questionnaire,
Ids.newId(fhirVersion, Ids.ensureIdType(PATIENT_ID, "Patient")),
null,
null,
true,
libraryEngine,
FhirModelResolverCache.resolverForVersion(fhirVersion),
null);
}

public static EvaluateRequest newEvaluateRequestForVersion(
FhirVersionEnum fhirVersion, LibraryEngine libraryEngine, IBaseResource library) {
return new EvaluateRequest(
library,
Ids.newId(fhirVersion, Ids.ensureIdType(PATIENT_ID, "Patient")),
null,
null,
true,
null,
null,
libraryEngine,
FhirModelResolverCache.resolverForVersion(fhirVersion));
}
}
Loading