Fix tests + renaming
This commit is contained in:
parent
d74b0e2b4a
commit
3e2039a514
|
@ -38,7 +38,6 @@ import java.sql.Connection;
|
|||
import java.sql.DriverManager;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
|
@ -48,7 +47,6 @@ import java.util.HashSet;
|
|||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
import lombok.Getter;
|
||||
|
@ -56,7 +54,6 @@ import org.apache.commons.lang3.StringUtils;
|
|||
import org.fhir.ucum.UcumService;
|
||||
import org.hl7.fhir.exceptions.DefinitionException;
|
||||
import org.hl7.fhir.exceptions.FHIRException;
|
||||
import org.hl7.fhir.exceptions.NoTerminologyServiceException;
|
||||
import org.hl7.fhir.exceptions.TerminologyServiceException;
|
||||
import org.hl7.fhir.r5.conformance.profile.ProfileUtilities;
|
||||
import org.hl7.fhir.r5.context.CanonicalResourceManager.CanonicalResourceProxy;
|
||||
|
@ -114,7 +111,6 @@ import org.hl7.fhir.r5.model.Bundle.BundleType;
|
|||
import org.hl7.fhir.r5.model.Bundle.HTTPVerb;
|
||||
import org.hl7.fhir.r5.model.ValueSet.ConceptSetComponent;
|
||||
import org.hl7.fhir.r5.model.ValueSet.ValueSetComposeComponent;
|
||||
import org.hl7.fhir.r5.profilemodel.PEDefinition;
|
||||
import org.hl7.fhir.r5.profilemodel.PEBuilder.PEElementPropertiesPolicy;
|
||||
import org.hl7.fhir.r5.profilemodel.PEBuilder;
|
||||
import org.hl7.fhir.r5.renderers.OperationOutcomeRenderer;
|
||||
|
@ -131,7 +127,6 @@ import org.hl7.fhir.r5.terminologies.utilities.TerminologyCache.CacheToken;
|
|||
import org.hl7.fhir.r5.terminologies.validation.VSCheckerException;
|
||||
import org.hl7.fhir.r5.terminologies.validation.ValueSetValidator;
|
||||
import org.hl7.fhir.r5.terminologies.ValueSetUtilities;
|
||||
import org.hl7.fhir.r5.terminologies.client.ITerminologyClient;
|
||||
import org.hl7.fhir.r5.terminologies.client.TerminologyClientR5.TerminologyClientR5Factory;
|
||||
import org.hl7.fhir.r5.terminologies.client.TerminologyClientManager;
|
||||
import org.hl7.fhir.r5.terminologies.client.TerminologyClientContext;
|
||||
|
@ -148,16 +143,10 @@ import org.hl7.fhir.utilities.Utilities;
|
|||
import org.hl7.fhir.utilities.VersionUtilities;
|
||||
import org.hl7.fhir.utilities.i18n.I18nBase;
|
||||
import org.hl7.fhir.utilities.i18n.I18nConstants;
|
||||
import org.hl7.fhir.utilities.json.JsonException;
|
||||
import org.hl7.fhir.utilities.json.model.JsonArray;
|
||||
import org.hl7.fhir.utilities.json.model.JsonProperty;
|
||||
import org.hl7.fhir.utilities.json.parser.JsonParser;
|
||||
import org.hl7.fhir.utilities.npm.NpmPackageIndexBuilder;
|
||||
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity;
|
||||
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueType;
|
||||
import org.hl7.fhir.utilities.validation.ValidationOptions;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
@ -242,7 +231,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
private Object lock = new Object(); // used as a lock for the data that follows
|
||||
protected String version; // although the internal resources are all R5, the version of FHIR they describe may not be
|
||||
|
||||
protected TerminologyClientManager tcc = new TerminologyClientManager(new TerminologyClientR5Factory());
|
||||
protected TerminologyClientManager terminologyClientManager = new TerminologyClientManager(new TerminologyClientR5Factory());
|
||||
private boolean minimalMemory = false;
|
||||
|
||||
private Map<String, Map<String, ResourceProxy>> allResourcesById = new HashMap<String, Map<String, ResourceProxy>>();
|
||||
|
@ -360,7 +349,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
tlogging = other.tlogging;
|
||||
locator = other.locator;
|
||||
userAgent = other.userAgent;
|
||||
tcc.copy(other.tcc);
|
||||
terminologyClientManager.copy(other.terminologyClientManager);
|
||||
cachingAllowed = other.cachingAllowed;
|
||||
}
|
||||
}
|
||||
|
@ -785,18 +774,18 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
if (noTerminologyServer) {
|
||||
return false;
|
||||
}
|
||||
if (tcc.getTxcaps() == null) {
|
||||
if (terminologyClientManager.getTxCapabilities() == null) {
|
||||
try {
|
||||
logger.logMessage("Terminology server: Check for supported code systems for "+system);
|
||||
final TerminologyCapabilities capabilityStatement = txCache.hasTerminologyCapabilities() ? txCache.getTerminologyCapabilities() : tcc.getMasterClient().getTerminologyCapabilities();
|
||||
final TerminologyCapabilities capabilityStatement = txCache.hasTerminologyCapabilities() ? txCache.getTerminologyCapabilities() : terminologyClientManager.getMasterClient().getTerminologyCapabilities();
|
||||
txCache.cacheTerminologyCapabilities(capabilityStatement);
|
||||
setTxCaps(capabilityStatement);
|
||||
} catch (Exception e) {
|
||||
if (canRunWithoutTerminology) {
|
||||
noTerminologyServer = true;
|
||||
logger.logMessage("==============!! Running without terminology server !! ==============");
|
||||
if (tcc.getMasterClient() != null) {
|
||||
logger.logMessage("txServer = "+tcc.getMasterClient().getId());
|
||||
if (terminologyClientManager.getMasterClient() != null) {
|
||||
logger.logMessage("txServer = "+ terminologyClientManager.getMasterClient().getId());
|
||||
logger.logMessage("Error = "+e.getMessage()+"");
|
||||
}
|
||||
logger.logMessage("=====================================================================");
|
||||
|
@ -860,7 +849,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
return res;
|
||||
}
|
||||
Set<String> systems = findRelevantSystems(vs);
|
||||
TerminologyClientContext tc = tcc.chooseServer(systems, true);
|
||||
TerminologyClientContext tc = terminologyClientManager.chooseServer(systems, true);
|
||||
Parameters p = constructParameters(tc, vs, hierarchical);
|
||||
for (ConceptSetComponent incl : vs.getCompose().getInclude()) {
|
||||
codeSystemsUsed.add(incl.getSystem());
|
||||
|
@ -877,7 +866,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
params.put("_incomplete", "true");
|
||||
txLog("$expand on "+txCache.summary(vs)+" on "+tc.getAddress());
|
||||
if (addDependentResources(tc, p, vs)) {
|
||||
p.addParameter().setName("cache-id").setValue(new IdType(tcc.getCacheId()));
|
||||
p.addParameter().setName("cache-id").setValue(new IdType(terminologyClientManager.getCacheId()));
|
||||
}
|
||||
|
||||
try {
|
||||
|
@ -975,9 +964,9 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
return new ValueSetExpansionOutcome(formatMessage(I18nConstants.ERROR_EXPANDING_VALUESET_RUNNING_WITHOUT_TERMINOLOGY_SERVICES), TerminologyServiceErrorClass.NOSERVICE, allErrors, false);
|
||||
}
|
||||
|
||||
p.addParameter().setName("cache-id").setValue(new IdType(tcc.getCacheId()));
|
||||
p.addParameter().setName("cache-id").setValue(new IdType(terminologyClientManager.getCacheId()));
|
||||
Set<String> systems = findRelevantSystems(vs);
|
||||
TerminologyClientContext tc = tcc.chooseServer(systems, true);
|
||||
TerminologyClientContext tc = terminologyClientManager.chooseServer(systems, true);
|
||||
addDependentResources(tc, p, vs);
|
||||
|
||||
Map<String, String> params = new HashMap<String, String>();
|
||||
|
@ -1060,7 +1049,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
if (!t.hasResult()) {
|
||||
try {
|
||||
ValueSetValidator vsc = constructValueSetCheckerSimple(options, vs == null ? t.getVsObj() : vs);
|
||||
vsc.setThrowToServer(options.isUseServer() && tcc.hasClient());
|
||||
vsc.setThrowToServer(options.isUseServer() && terminologyClientManager.hasClient());
|
||||
ValidationResult res = vsc.validateCode("Coding", t.getCoding());
|
||||
if (txCache != null) {
|
||||
txCache.cacheValidation(t.getCacheToken(), res, TerminologyCache.TRANSIENT);
|
||||
|
@ -1110,7 +1099,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
}
|
||||
|
||||
if (batch.getEntry().size() > 0) {
|
||||
TerminologyClientContext tc = tcc.chooseServer(systems, false);
|
||||
TerminologyClientContext tc = terminologyClientManager.chooseServer(systems, false);
|
||||
Bundle resp = processBatch(tc, batch, systems);
|
||||
for (int i = 0; i < batch.getEntry().size(); i++) {
|
||||
CodingValidationRequest t = (CodingValidationRequest) batch.getEntry().get(i).getUserData("source");
|
||||
|
@ -1130,7 +1119,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
|
||||
private Bundle processBatch(TerminologyClientContext tc, Bundle batch, Set<String> systems) {
|
||||
txLog("$batch validate for "+batch.getEntry().size()+" codes on systems "+systems.toString());
|
||||
if (tcc == null) {
|
||||
if (terminologyClientManager == null) {
|
||||
throw new FHIRException(formatMessage(I18nConstants.ATTEMPT_TO_USE_TERMINOLOGY_SERVER_WHEN_NO_TERMINOLOGY_SERVER_IS_AVAILABLE));
|
||||
}
|
||||
if (txLog != null) {
|
||||
|
@ -1167,7 +1156,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
if (!t.hasResult()) {
|
||||
try {
|
||||
ValueSetValidator vsc = constructValueSetCheckerSimple(options, vs);
|
||||
vsc.setThrowToServer(options.isUseServer() && tcc.hasClient());
|
||||
vsc.setThrowToServer(options.isUseServer() && terminologyClientManager.hasClient());
|
||||
ValidationResult res = vsc.validateCode("Coding", t.getCoding());
|
||||
if (txCache != null) {
|
||||
txCache.cacheValidation(t.getCacheToken(), res, TerminologyCache.TRANSIENT);
|
||||
|
@ -1215,7 +1204,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
systems.add(codingValidationRequest.getCoding().getSystem());
|
||||
}
|
||||
}
|
||||
TerminologyClientContext tc = tcc.chooseServer(systems, false);
|
||||
TerminologyClientContext tc = terminologyClientManager.chooseServer(systems, false);
|
||||
|
||||
if (batch.getEntry().size() > 0) {
|
||||
Bundle resp = processBatch(tc, batch, systems);
|
||||
|
@ -1291,7 +1280,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
try {
|
||||
ValueSetValidator vsc = constructValueSetCheckerSimple(options, vs, ctxt);
|
||||
vsc.setUnknownSystems(unknownSystems);
|
||||
vsc.setThrowToServer(options.isUseServer() && tcc.hasClient());
|
||||
vsc.setThrowToServer(options.isUseServer() && terminologyClientManager.hasClient());
|
||||
if (!ValueSetUtilities.isServerSide(code.getSystem())) {
|
||||
res = vsc.validateCode(path, code);
|
||||
if (txCache != null && cachingAllowed) {
|
||||
|
@ -1320,14 +1309,14 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
}
|
||||
}
|
||||
|
||||
if (localError != null && !tcc.hasClient()) {
|
||||
if (localError != null && !terminologyClientManager.hasClient()) {
|
||||
if (unknownSystems.size() > 0) {
|
||||
return new ValidationResult(IssueSeverity.ERROR, localError, TerminologyServiceErrorClass.CODESYSTEM_UNSUPPORTED, issues).setUnknownSystems(unknownSystems);
|
||||
} else {
|
||||
return new ValidationResult(IssueSeverity.ERROR, localError, TerminologyServiceErrorClass.UNKNOWN, issues);
|
||||
}
|
||||
}
|
||||
if (localWarning != null && !tcc.hasClient()) {
|
||||
if (localWarning != null && !terminologyClientManager.hasClient()) {
|
||||
return new ValidationResult(IssueSeverity.WARNING,formatMessage(I18nConstants.UNABLE_TO_VALIDATE_CODE_WITHOUT_USING_SERVER, localWarning), TerminologyServiceErrorClass.BLOCKED_BY_OPTIONS, issues);
|
||||
}
|
||||
if (!options.isUseServer()) {
|
||||
|
@ -1348,7 +1337,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
}
|
||||
|
||||
Set<String> systems = findRelevantSystems(code, vs);
|
||||
TerminologyClientContext tc = tcc.chooseServer(systems, false);
|
||||
TerminologyClientContext tc = terminologyClientManager.chooseServer(systems, false);
|
||||
|
||||
String csumm =cachingAllowed && txCache != null ? txCache.summary(code) : null;
|
||||
if (cachingAllowed && txCache != null) {
|
||||
|
@ -1385,11 +1374,11 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
}
|
||||
|
||||
protected ValueSetValidator constructValueSetCheckerSimple(ValidationOptions options, ValueSet vs, ValidationContextCarrier ctxt) {
|
||||
return new ValueSetValidator(this, new TerminologyOperationContext(this, options), options, vs, ctxt, expParameters, tcc.getTxcaps());
|
||||
return new ValueSetValidator(this, new TerminologyOperationContext(this, options), options, vs, ctxt, expParameters, terminologyClientManager.getTxCapabilities());
|
||||
}
|
||||
|
||||
protected ValueSetValidator constructValueSetCheckerSimple( ValidationOptions options, ValueSet vs) {
|
||||
return new ValueSetValidator(this, new TerminologyOperationContext(this, options), options, vs, expParameters, tcc.getTxcaps());
|
||||
return new ValueSetValidator(this, new TerminologyOperationContext(this, options), options, vs, expParameters, terminologyClientManager.getTxCapabilities());
|
||||
}
|
||||
|
||||
protected Parameters constructParameters(TerminologyClientContext tcd, ValueSet vs, boolean hierarchical) {
|
||||
|
@ -1398,7 +1387,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
p.setParameter("excludeNested", !hierarchical);
|
||||
|
||||
addDependentResources(tcd, p, vs);
|
||||
p.addParameter().setName("cache-id").setValue(new IdType(tcc.getCacheId()));
|
||||
p.addParameter().setName("cache-id").setValue(new IdType(terminologyClientManager.getCacheId()));
|
||||
return p;
|
||||
}
|
||||
|
||||
|
@ -1494,7 +1483,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
try {
|
||||
ValueSetValidator vsc = constructValueSetCheckerSimple(options, vs);
|
||||
vsc.setUnknownSystems(unknownSystems);
|
||||
vsc.setThrowToServer(options.isUseServer() && tcc.hasClient());
|
||||
vsc.setThrowToServer(options.isUseServer() && terminologyClientManager.hasClient());
|
||||
res = vsc.validateCode("CodeableConcept", code);
|
||||
if (cachingAllowed) {
|
||||
txCache.cacheValidation(cacheToken, res, TerminologyCache.TRANSIENT);
|
||||
|
@ -1520,14 +1509,14 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
}
|
||||
}
|
||||
|
||||
if (localError != null && !tcc.hasClient()) {
|
||||
if (localError != null && !terminologyClientManager.hasClient()) {
|
||||
if (unknownSystems.size() > 0) {
|
||||
return new ValidationResult(IssueSeverity.ERROR, localError, TerminologyServiceErrorClass.CODESYSTEM_UNSUPPORTED, issues).setUnknownSystems(unknownSystems);
|
||||
} else {
|
||||
return new ValidationResult(IssueSeverity.ERROR, localError, TerminologyServiceErrorClass.UNKNOWN, issues);
|
||||
}
|
||||
}
|
||||
if (localWarning != null && !tcc.hasClient()) {
|
||||
if (localWarning != null && !terminologyClientManager.hasClient()) {
|
||||
return new ValidationResult(IssueSeverity.WARNING,formatMessage(I18nConstants.UNABLE_TO_VALIDATE_CODE_WITHOUT_USING_SERVER, localWarning), TerminologyServiceErrorClass.BLOCKED_BY_OPTIONS, issues);
|
||||
}
|
||||
|
||||
|
@ -1540,7 +1529,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
return new ValidationResult(IssueSeverity.ERROR, "Error validating code: running without terminology services", TerminologyServiceErrorClass.NOSERVICE, null);
|
||||
}
|
||||
Set<String> systems = findRelevantSystems(code, vs);
|
||||
TerminologyClientContext tc = tcc.chooseServer(systems, false);
|
||||
TerminologyClientContext tc = terminologyClientManager.chooseServer(systems, false);
|
||||
|
||||
txLog("$validate "+txCache.summary(code)+" for "+ txCache.summary(vs)+" on "+tc.getAddress());
|
||||
try {
|
||||
|
@ -1650,23 +1639,23 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
return processValidationResult(pOut, vs == null ? null : vs.getUrl(), tc.getClient().getAddress());
|
||||
}
|
||||
|
||||
protected void addServerValidationParameters(TerminologyClientContext tcd, ValueSet vs, Parameters pin, ValidationOptions options) {
|
||||
protected void addServerValidationParameters(TerminologyClientContext terminologyClientContext, ValueSet vs, Parameters pin, ValidationOptions options) {
|
||||
boolean cache = false;
|
||||
if (vs != null) {
|
||||
if (tcc.isTxCaching() && tcc.getCacheId() != null && vs.getUrl() != null && tcd.getCached().contains(vs.getUrl()+"|"+ vs.getVersion())) {
|
||||
if (terminologyClientManager.isTxCaching() && terminologyClientManager.getCacheId() != null && vs.getUrl() != null && terminologyClientContext.getCached().contains(vs.getUrl()+"|"+ vs.getVersion())) {
|
||||
pin.addParameter().setName("url").setValue(new UriType(vs.getUrl()+(vs.hasVersion() ? "|"+ vs.getVersion() : "")));
|
||||
} else if (options.getVsAsUrl()){
|
||||
pin.addParameter().setName("url").setValue(new UriType(vs.getUrl()));
|
||||
} else {
|
||||
pin.addParameter().setName("valueSet").setResource(vs);
|
||||
if (vs.getUrl() != null) {
|
||||
tcd.getCached().add(vs.getUrl()+"|"+ vs.getVersion());
|
||||
terminologyClientContext.getCached().add(vs.getUrl()+"|"+ vs.getVersion());
|
||||
}
|
||||
}
|
||||
cache = true;
|
||||
addDependentResources(tcd, pin, vs);
|
||||
addDependentResources(terminologyClientContext, pin, vs);
|
||||
}
|
||||
pin.addParameter().setName("cache-id").setValue(new IdType(tcc.getCacheId()));
|
||||
pin.addParameter().setName("cache-id").setValue(new IdType(terminologyClientManager.getCacheId()));
|
||||
for (ParametersParameterComponent pp : pin.getParameter()) {
|
||||
if (pp.getName().equals("profile")) {
|
||||
throw new Error(formatMessage(I18nConstants.CAN_ONLY_SPECIFY_PROFILE_IN_THE_CONTEXT));
|
||||
|
@ -1713,7 +1702,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
private boolean checkAddToParams(TerminologyClientContext tc, Parameters pin, CanonicalResource cr) {
|
||||
boolean cache = false;
|
||||
boolean addToParams = false;
|
||||
if (tcc.usingCache()) {
|
||||
if (terminologyClientManager.usingCache()) {
|
||||
if (!tc.alreadyCached(cr)) {
|
||||
tc.addToCache(cr);
|
||||
if (logger.isDebugLogging()) {
|
||||
|
@ -1869,7 +1858,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
Utilities.createDirectory(cachePath);
|
||||
}
|
||||
txCache = new TerminologyCache(lock, cachePath);
|
||||
tcc.setCache(txCache);
|
||||
terminologyClientManager.setCache(txCache);
|
||||
}
|
||||
|
||||
public void clearTSCache(String url) throws Exception {
|
||||
|
@ -1902,7 +1891,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
|
||||
@Override
|
||||
public boolean isNoTerminologyServer() {
|
||||
return noTerminologyServer || !tcc.hasClient();
|
||||
return noTerminologyServer || !terminologyClientManager.hasClient();
|
||||
}
|
||||
|
||||
public void setNoTerminologyServer(boolean noTerminologyServer) {
|
||||
|
@ -2979,39 +2968,39 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
}
|
||||
|
||||
public int getClientRetryCount() {
|
||||
return tcc.getRetryCount();
|
||||
return terminologyClientManager.getRetryCount();
|
||||
}
|
||||
|
||||
public IWorkerContext setClientRetryCount(int value) {
|
||||
tcc.setRetryCount(value);
|
||||
terminologyClientManager.setRetryCount(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
public TerminologyClientManager getTxClientManager() {
|
||||
return tcc;
|
||||
return terminologyClientManager;
|
||||
}
|
||||
|
||||
public String getCacheId() {
|
||||
return tcc.getCacheId();
|
||||
return terminologyClientManager.getCacheId();
|
||||
}
|
||||
|
||||
public void setCacheId(String cacheId) {
|
||||
tcc.setCacheId(cacheId);
|
||||
terminologyClientManager.setCacheId(cacheId);
|
||||
}
|
||||
|
||||
public TerminologyCapabilities getTxCaps() {
|
||||
return tcc.getTxcaps();
|
||||
return terminologyClientManager.getTxCapabilities();
|
||||
}
|
||||
|
||||
public void setTxCaps(TerminologyCapabilities txCaps) {
|
||||
this.tcc.setTxcaps(txCaps);
|
||||
this.terminologyClientManager.setTxCapabilities(txCaps);
|
||||
if (txCaps != null) {
|
||||
for (TerminologyCapabilitiesExpansionParameterComponent t : tcc.getTxcaps().getExpansion().getParameter()) {
|
||||
for (TerminologyCapabilitiesExpansionParameterComponent t : terminologyClientManager.getTxCapabilities().getExpansion().getParameter()) {
|
||||
if ("cache-id".equals(t.getName())) {
|
||||
tcc.setTxCaching(true);
|
||||
terminologyClientManager.setTxCaching(true);
|
||||
}
|
||||
}
|
||||
for (TerminologyCapabilitiesCodeSystemComponent tccs : tcc.getTxcaps().getCodeSystem()) {
|
||||
for (TerminologyCapabilitiesCodeSystemComponent tccs : terminologyClientManager.getTxCapabilities().getCodeSystem()) {
|
||||
supportedCodeSystems.add(tccs.getUri());
|
||||
}
|
||||
}
|
||||
|
@ -3046,7 +3035,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
|
||||
protected void setUserAgent(String userAgent) {
|
||||
this.userAgent = userAgent;
|
||||
tcc.setUserAgent(userAgent);
|
||||
terminologyClientManager.setUserAgent(userAgent);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -36,7 +36,6 @@ import java.io.FileNotFoundException;
|
|||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
@ -63,9 +62,6 @@ import org.hl7.fhir.r5.model.StructureDefinition.StructureDefinitionKind;
|
|||
import org.hl7.fhir.r5.model.StructureDefinition.TypeDerivationRule;
|
||||
import org.hl7.fhir.r5.model.StructureMap.StructureMapModelMode;
|
||||
import org.hl7.fhir.r5.model.StructureMap.StructureMapStructureComponent;
|
||||
import org.hl7.fhir.r5.profilemodel.PEDefinition;
|
||||
import org.hl7.fhir.r5.profilemodel.PEBuilder;
|
||||
import org.hl7.fhir.r5.terminologies.CodeSystemUtilities;
|
||||
import org.hl7.fhir.r5.terminologies.JurisdictionUtilities;
|
||||
import org.hl7.fhir.r5.terminologies.client.ITerminologyClient;
|
||||
import org.hl7.fhir.r5.terminologies.client.TerminologyClientManager;
|
||||
|
@ -251,7 +247,7 @@ public class SimpleWorkerContext extends BaseWorkerContext implements IWorkerCon
|
|||
public SimpleWorkerContext fromPackage(NpmPackage pi) throws IOException, FHIRException {
|
||||
SimpleWorkerContext context = getSimpleWorkerContextInstance();
|
||||
context.setAllowLoadingDuplicates(allowLoadingDuplicates);
|
||||
context.tcc = new TerminologyClientManager(TerminologyClientR5.factory());
|
||||
context.terminologyClientManager = new TerminologyClientManager(TerminologyClientR5.factory());
|
||||
context.loadFromPackage(pi, null);
|
||||
return build(context);
|
||||
}
|
||||
|
@ -260,7 +256,7 @@ public class SimpleWorkerContext extends BaseWorkerContext implements IWorkerCon
|
|||
SimpleWorkerContext context = getSimpleWorkerContextInstance();
|
||||
context.setAllowLoadingDuplicates(allowLoadingDuplicates);
|
||||
context.version = pi.getNpm().asString("version");
|
||||
context.tcc.setFactory(loader.txFactory());
|
||||
context.terminologyClientManager.setFactory(loader.txFactory());
|
||||
context.loadFromPackage(pi, loader);
|
||||
context.finishLoading(genSnapshots);
|
||||
return build(context);
|
||||
|
@ -335,20 +331,20 @@ public class SimpleWorkerContext extends BaseWorkerContext implements IWorkerCon
|
|||
public String connectToTSServer(ITerminologyClientFactory factory, ITerminologyClient client, String log) {
|
||||
try {
|
||||
txLog("Connect to "+client.getAddress());
|
||||
tcc.setFactory(factory);
|
||||
tcc.setMasterClient(client);
|
||||
terminologyClientManager.setFactory(factory);
|
||||
terminologyClientManager.setMasterClient(client);
|
||||
if (log != null && (log.endsWith(".htm") || log.endsWith(".html"))) {
|
||||
txLog = new HTMLClientLogger(log);
|
||||
} else {
|
||||
txLog = new TextClientLogger(log);
|
||||
}
|
||||
tcc.setLogger(txLog);
|
||||
tcc.setUserAgent(userAgent);
|
||||
terminologyClientManager.setLogger(txLog);
|
||||
terminologyClientManager.setUserAgent(userAgent);
|
||||
|
||||
final CapabilityStatement capabilitiesStatementQuick = txCache.hasCapabilityStatement() ? txCache.getCapabilityStatement() : tcc.getMasterClient().getCapabilitiesStatementQuick();
|
||||
final CapabilityStatement capabilitiesStatementQuick = txCache.hasCapabilityStatement() ? txCache.getCapabilityStatement() : terminologyClientManager.getMasterClient().getCapabilitiesStatementQuick();
|
||||
txCache.cacheCapabilityStatement(capabilitiesStatementQuick);
|
||||
|
||||
final TerminologyCapabilities capabilityStatement = txCache.hasTerminologyCapabilities() ? txCache.getTerminologyCapabilities() : tcc.getMasterClient().getTerminologyCapabilities();
|
||||
final TerminologyCapabilities capabilityStatement = txCache.hasTerminologyCapabilities() ? txCache.getTerminologyCapabilities() : terminologyClientManager.getMasterClient().getTerminologyCapabilities();
|
||||
txCache.cacheTerminologyCapabilities(capabilityStatement);
|
||||
|
||||
setTxCaps(capabilityStatement);
|
||||
|
@ -539,7 +535,7 @@ public class SimpleWorkerContext extends BaseWorkerContext implements IWorkerCon
|
|||
}
|
||||
}
|
||||
if (loader != null) {
|
||||
tcc.setFactory(loader.txFactory());
|
||||
terminologyClientManager.setFactory(loader.txFactory());
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
|
|
@ -11,13 +11,10 @@ import java.util.Map;
|
|||
import java.util.Set;
|
||||
|
||||
import org.hl7.fhir.exceptions.TerminologyServiceException;
|
||||
import org.hl7.fhir.r5.model.CanonicalResource;
|
||||
import org.hl7.fhir.r5.model.TerminologyCapabilities;
|
||||
import org.hl7.fhir.r5.model.ValueSet;
|
||||
import org.hl7.fhir.r5.terminologies.utilities.TerminologyCache;
|
||||
import org.hl7.fhir.utilities.ToolingClientLogger;
|
||||
import org.hl7.fhir.utilities.Utilities;
|
||||
import org.hl7.fhir.utilities.json.JsonException;
|
||||
import org.hl7.fhir.utilities.json.model.JsonObject;
|
||||
import org.hl7.fhir.utilities.json.parser.JsonParser;
|
||||
|
||||
|
@ -198,11 +195,11 @@ public class TerminologyClientManager {
|
|||
return map;
|
||||
}
|
||||
|
||||
public TerminologyCapabilities getTxcaps() {
|
||||
public TerminologyCapabilities getTxCapabilities() {
|
||||
return hasClient() ? serverList.get(0).getTxcaps() : null;
|
||||
}
|
||||
|
||||
public void setTxcaps(TerminologyCapabilities txCaps) {
|
||||
public void setTxCapabilities(TerminologyCapabilities txCaps) {
|
||||
serverList.get(0).setTxcaps(txCaps);
|
||||
}
|
||||
|
||||
|
|
|
@ -5,8 +5,7 @@ import static org.mockito.ArgumentMatchers.any;
|
|||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||
import static org.mockito.ArgumentMatchers.argThat;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
@ -21,6 +20,7 @@ import org.hl7.fhir.r5.model.Parameters;
|
|||
import org.hl7.fhir.r5.model.TerminologyCapabilities;
|
||||
import org.hl7.fhir.r5.model.ValueSet;
|
||||
import org.hl7.fhir.r5.terminologies.client.ITerminologyClient;
|
||||
import org.hl7.fhir.r5.terminologies.client.TerminologyClientContext;
|
||||
import org.hl7.fhir.r5.terminologies.expansion.ValueSetExpander;
|
||||
import org.hl7.fhir.r5.terminologies.expansion.ValueSetExpansionOutcome;
|
||||
import org.hl7.fhir.r5.terminologies.utilities.TerminologyCache;
|
||||
|
@ -91,9 +91,11 @@ public class SimpleWorkerContextTests {
|
|||
|
||||
@BeforeEach
|
||||
public void beforeEach() {
|
||||
|
||||
Mockito.doReturn(DUMMY_URL).when(terminologyClient).getAddress();
|
||||
context.txCache = terminologyCache;
|
||||
context.expParameters = expParameters;
|
||||
context.tcc.setMasterClient(terminologyClient);
|
||||
context.terminologyClientManager.setMasterClient(terminologyClient);
|
||||
context.txLog = txLog;
|
||||
}
|
||||
|
||||
|
@ -138,6 +140,20 @@ public class SimpleWorkerContextTests {
|
|||
}
|
||||
}
|
||||
|
||||
public class TerminologyClientContextMatcher implements ArgumentMatcher<TerminologyClientContext> {
|
||||
|
||||
final private TerminologyClientContext left;
|
||||
|
||||
TerminologyClientContextMatcher(TerminologyClientContext left) {
|
||||
this.left = left;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(TerminologyClientContext argument) {
|
||||
return left.getAddress().equals(argument.getAddress());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidateCodingWithCache() throws IOException {
|
||||
ValidationOptions validationOptions = new ValidationOptions(FhirPublication.R5).withGuessSystem().withVersionFlexible(false);
|
||||
|
@ -189,7 +205,10 @@ public class SimpleWorkerContextTests {
|
|||
|
||||
Mockito.doReturn(cacheToken).when(terminologyCache).generateValidationToken(validationOptions, coding, valueSet, expParameters);
|
||||
Mockito.doReturn(pIn).when(context).constructParameters(validationOptions, coding);
|
||||
Mockito.doReturn(expectedValidationResult).when(context).validateOnServer(context.getTxClientManager().getMaster(), valueSet, pIn, validationOptions);
|
||||
|
||||
TerminologyClientContext terminologyClientContext = context.getTxClientManager().getMaster();
|
||||
|
||||
Mockito.doReturn(expectedValidationResult).when(context).validateOnServer(terminologyClientContext, valueSet, pIn, validationOptions);
|
||||
|
||||
ValidationContextCarrier ctxt = mock(ValidationContextCarrier.class);
|
||||
|
||||
|
@ -233,7 +252,7 @@ public class SimpleWorkerContextTests {
|
|||
|
||||
Mockito.verify(valueSetCheckerSimple).validateCode("CodeableConcept", codeableConcept);
|
||||
Mockito.verify(terminologyCache).cacheValidation(cacheToken, expectedValidationResult, false);
|
||||
Mockito.verify(context, times(0)).validateOnServer(context.getTxClientManager().getMaster(), any(), any(), any());
|
||||
Mockito.verify(context, times(0)).validateOnServer(any(), any(), any(), any());
|
||||
}
|
||||
|
||||
|
||||
|
@ -246,7 +265,9 @@ public class SimpleWorkerContextTests {
|
|||
ValidationOptions validationOptions = CacheTestUtils.validationOptions.withNoClient();
|
||||
Mockito.doReturn(pIn).when(context).constructParameters(validationOptions, codeableConcept);
|
||||
|
||||
Mockito.doReturn(expectedValidationResult).when(context).validateOnServer(context.getTxClientManager().getMaster(), valueSet, pIn, validationOptions);
|
||||
TerminologyClientContext terminologyClientContext = context.getTxClientManager().getMaster();
|
||||
|
||||
Mockito.doReturn(expectedValidationResult).when(context).validateOnServer(terminologyClientContext, valueSet, pIn, validationOptions);
|
||||
|
||||
Mockito.doReturn(cacheToken).when(terminologyCache).generateValidationToken(validationOptions, codeableConcept, valueSet, expParameters);
|
||||
|
||||
|
@ -256,7 +277,7 @@ public class SimpleWorkerContextTests {
|
|||
|
||||
Mockito.verify(valueSetCheckerSimple, times(0)).validateCode("CodeableConcept", codeableConcept);
|
||||
Mockito.verify(terminologyCache).cacheValidation(cacheToken, expectedValidationResult, true);
|
||||
Mockito.verify(context).validateOnServer(context.getTxClientManager().getMaster(),valueSet, pIn, validationOptions);
|
||||
Mockito.verify(context).validateOnServer(terminologyClientContext, valueSet, pIn, validationOptions);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -295,8 +316,10 @@ public class SimpleWorkerContextTests {
|
|||
|
||||
Mockito.doReturn(cacheToken).when(terminologyCache).generateExpandToken(argThat(new ValueSetMatcher(vs)),eq(true));
|
||||
|
||||
// #FIXME
|
||||
// Mockito.doReturn(expParameters).when(context).constructParameters(argThat(new ValueSetMatcher(vs)), eq(true));
|
||||
TerminologyClientContext terminologyClientContext = context.getTxClientManager().getMaster();
|
||||
|
||||
|
||||
Mockito.doReturn(expParameters).when(context).constructParameters(argThat(new TerminologyClientContextMatcher(terminologyClientContext)),argThat(new ValueSetMatcher(vs)), eq(true));
|
||||
|
||||
ValueSet expectedValueSet = new ValueSet();
|
||||
|
||||
|
|
Loading…
Reference in New Issue