Updated tests for missed dstu2 code coverage.
This commit is contained in:
parent
dc3443665c
commit
90f1981817
|
@ -47,18 +47,18 @@ public class TermReadSvcDstu2 extends BaseTermReadSvcImpl {
|
|||
@Autowired
|
||||
private IValidationSupport myValidationSupport;
|
||||
|
||||
private void addAllChildren(String theSystemString, org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent theCode, List<FhirVersionIndependentConcept> theListToPopulate) {
|
||||
private void addAllChildren(String theSystemString, ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept theCode, List<FhirVersionIndependentConcept> theListToPopulate) {
|
||||
if (isNotBlank(theCode.getCode())) {
|
||||
theListToPopulate.add(new FhirVersionIndependentConcept(theSystemString, theCode.getCode()));
|
||||
}
|
||||
for (org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent nextChild : theCode.getConcept()) {
|
||||
for (ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept nextChild : theCode.getConcept()) {
|
||||
addAllChildren(theSystemString, nextChild, theListToPopulate);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean addTreeIfItContainsCode(String theSystemString, org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent theNext, String theCode, List<FhirVersionIndependentConcept> theListToPopulate) {
|
||||
private boolean addTreeIfItContainsCode(String theSystemString, ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept theNext, String theCode, List<FhirVersionIndependentConcept> theListToPopulate) {
|
||||
boolean foundCodeInChild = false;
|
||||
for (org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent nextChild : theNext.getConcept()) {
|
||||
for (ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept nextChild : theNext.getConcept()) {
|
||||
foundCodeInChild |= addTreeIfItContainsCode(theSystemString, nextChild, theCode, theListToPopulate);
|
||||
}
|
||||
|
||||
|
@ -95,9 +95,9 @@ public class TermReadSvcDstu2 extends BaseTermReadSvcImpl {
|
|||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
private void findCodesAbove(org.hl7.fhir.dstu2.model.ValueSet theSystem, String theSystemString, String theCode, List<FhirVersionIndependentConcept> theListToPopulate) {
|
||||
List<org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent> conceptList = theSystem.getCodeSystem().getConcept();
|
||||
for (org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent next : conceptList) {
|
||||
private void findCodesAbove(ca.uhn.fhir.model.dstu2.resource.ValueSet theSystem, String theSystemString, String theCode, List<FhirVersionIndependentConcept> theListToPopulate) {
|
||||
List<ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept> conceptList = theSystem.getCodeSystem().getConcept();
|
||||
for (ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept next : conceptList) {
|
||||
addTreeIfItContainsCode(theSystemString, next, theCode, theListToPopulate);
|
||||
}
|
||||
}
|
||||
|
@ -105,20 +105,20 @@ public class TermReadSvcDstu2 extends BaseTermReadSvcImpl {
|
|||
@Override
|
||||
public List<FhirVersionIndependentConcept> findCodesAboveUsingBuiltInSystems(String theSystem, String theCode) {
|
||||
ArrayList<FhirVersionIndependentConcept> retVal = new ArrayList<>();
|
||||
org.hl7.fhir.dstu2.model.ValueSet system = (org.hl7.fhir.dstu2.model.ValueSet) myValidationSupport.fetchCodeSystem(theSystem);
|
||||
ca.uhn.fhir.model.dstu2.resource.ValueSet system = (ca.uhn.fhir.model.dstu2.resource.ValueSet) myValidationSupport.fetchCodeSystem(theSystem);
|
||||
if (system != null) {
|
||||
findCodesAbove(system, theSystem, theCode, retVal);
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
private void findCodesBelow(org.hl7.fhir.dstu2.model.ValueSet theSystem, String theSystemString, String theCode, List<FhirVersionIndependentConcept> theListToPopulate) {
|
||||
List<org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent> conceptList = theSystem.getCodeSystem().getConcept();
|
||||
private void findCodesBelow(ca.uhn.fhir.model.dstu2.resource.ValueSet theSystem, String theSystemString, String theCode, List<FhirVersionIndependentConcept> theListToPopulate) {
|
||||
List<ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept> conceptList = theSystem.getCodeSystem().getConcept();
|
||||
findCodesBelow(theSystemString, theCode, theListToPopulate, conceptList);
|
||||
}
|
||||
|
||||
private void findCodesBelow(String theSystemString, String theCode, List<FhirVersionIndependentConcept> theListToPopulate, List<org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent> conceptList) {
|
||||
for (org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent next : conceptList) {
|
||||
private void findCodesBelow(String theSystemString, String theCode, List<FhirVersionIndependentConcept> theListToPopulate, List<ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept> conceptList) {
|
||||
for (ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept next : conceptList) {
|
||||
if (theCode.equals(next.getCode())) {
|
||||
addAllChildren(theSystemString, next, theListToPopulate);
|
||||
} else {
|
||||
|
@ -130,7 +130,7 @@ public class TermReadSvcDstu2 extends BaseTermReadSvcImpl {
|
|||
@Override
|
||||
public List<FhirVersionIndependentConcept> findCodesBelowUsingBuiltInSystems(String theSystem, String theCode) {
|
||||
ArrayList<FhirVersionIndependentConcept> retVal = new ArrayList<>();
|
||||
org.hl7.fhir.dstu2.model.ValueSet system = (org.hl7.fhir.dstu2.model.ValueSet) myValidationSupport.fetchCodeSystem(theSystem);
|
||||
ca.uhn.fhir.model.dstu2.resource.ValueSet system = (ca.uhn.fhir.model.dstu2.resource.ValueSet) myValidationSupport.fetchCodeSystem(theSystem);
|
||||
if (system != null) {
|
||||
findCodesBelow(system, theSystem, theCode, retVal);
|
||||
}
|
||||
|
|
|
@ -1,13 +1,34 @@
|
|||
package ca.uhn.fhir.jpa.term;
|
||||
|
||||
import ca.uhn.fhir.jpa.dao.dstu2.BaseJpaDstu2Test;
|
||||
import ca.uhn.fhir.jpa.term.api.ITermReadSvc;
|
||||
import ca.uhn.fhir.model.dstu2.composite.CodingDt;
|
||||
import ca.uhn.fhir.model.dstu2.resource.ValueSet;
|
||||
import ca.uhn.fhir.model.primitive.IdDt;
|
||||
import ca.uhn.fhir.rest.server.servlet.ServletRequestDetails;
|
||||
import ca.uhn.fhir.util.FhirVersionIndependentConcept;
|
||||
import org.hl7.fhir.instance.model.api.IBaseCoding;
|
||||
import org.hl7.fhir.r4.model.Coding;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.Answers;
|
||||
import org.mockito.Mock;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.Matchers.containsInAnyOrder;
|
||||
import static org.hamcrest.Matchers.empty;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class TerminologySvcImplDstu2Test {
|
||||
public class TerminologySvcImplDstu2Test extends BaseJpaDstu2Test {
|
||||
|
||||
@Autowired
|
||||
protected ITermReadSvc myTermReadSvc;
|
||||
|
||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||
protected ServletRequestDetails mySrd;
|
||||
|
||||
@Test
|
||||
public void testToCanonicalCoding() {
|
||||
|
@ -17,4 +38,70 @@ public class TerminologySvcImplDstu2Test {
|
|||
assertEquals("dstuCode", convertedCoding.getCode());
|
||||
assertEquals("dstuSystem", convertedCoding.getSystem());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindCodesBelowBuiltInCodeSystem() {
|
||||
List<FhirVersionIndependentConcept> concepts;
|
||||
Set<String> codes;
|
||||
|
||||
ValueSet upload = new ValueSet();
|
||||
upload.setId(new IdDt("testVs"));
|
||||
upload.setUrl("http://myVs");
|
||||
ValueSet.CodeSystem codeSystem = new ValueSet.CodeSystem().setSystem("http://myCs");
|
||||
codeSystem.addConcept(new ValueSet.CodeSystemConcept().setCode("codeA").addConcept(new ValueSet.CodeSystemConcept().setCode("codeAB")));
|
||||
upload.setCodeSystem(codeSystem);
|
||||
myValueSetDao.update(upload, mySrd);
|
||||
|
||||
concepts = myTermReadSvc.findCodesBelow("http://myVs", "codeA");
|
||||
codes = toCodes(concepts);
|
||||
assertThat(codes, containsInAnyOrder("codeA", "codeAB"));
|
||||
|
||||
concepts = myTermReadSvc.findCodesBelow("http://myVs", "codeAB");
|
||||
codes = toCodes(concepts);
|
||||
assertThat(codes, containsInAnyOrder("codeAB"));
|
||||
|
||||
// Unknown code
|
||||
concepts = myTermReadSvc.findCodesBelow("http://myVs", "FOO");
|
||||
codes = toCodes(concepts);
|
||||
assertThat(codes, empty());
|
||||
|
||||
// Unknown system
|
||||
concepts = myTermReadSvc.findCodesBelow("http://myVs2222", "codeA");
|
||||
codes = toCodes(concepts);
|
||||
assertThat(codes, empty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindCodesAboveBuiltInCodeSystem() {
|
||||
List<FhirVersionIndependentConcept> concepts;
|
||||
Set<String> codes;
|
||||
|
||||
ValueSet upload = new ValueSet();
|
||||
upload.setId(new IdDt("testVs"));
|
||||
upload.setUrl("http://myVs");
|
||||
ValueSet.CodeSystem codeSystem = new ValueSet.CodeSystem().setSystem("http://myCs");
|
||||
codeSystem.addConcept(new ValueSet.CodeSystemConcept().setCode("codeA").addConcept(new ValueSet.CodeSystemConcept().setCode("codeAB")));
|
||||
upload.setCodeSystem(codeSystem);
|
||||
myValueSetDao.update(upload, mySrd);
|
||||
|
||||
concepts = myTermReadSvc.findCodesAbove("http://myVs", "codeA");
|
||||
codes = toCodes(concepts);
|
||||
assertThat(codes, containsInAnyOrder("codeA"));
|
||||
|
||||
concepts = myTermReadSvc.findCodesAbove("http://myVs", "codeAB");
|
||||
codes = toCodes(concepts);
|
||||
assertThat(codes, containsInAnyOrder("codeA", "codeAB"));
|
||||
|
||||
// Unknown code
|
||||
concepts = myTermReadSvc.findCodesAbove("http://myVs", "FOO");
|
||||
codes = toCodes(concepts);
|
||||
assertThat(codes, empty());
|
||||
|
||||
// Unknown system
|
||||
concepts = myTermReadSvc.findCodesBelow("http://myVs2222", "codeA");
|
||||
codes = toCodes(concepts);
|
||||
assertThat(codes, empty());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -5,11 +5,15 @@ import ca.uhn.fhir.context.support.ConceptValidationOptions;
|
|||
import ca.uhn.fhir.context.support.DefaultProfileValidationSupport;
|
||||
import ca.uhn.fhir.context.support.IValidationSupport;
|
||||
import ca.uhn.fhir.context.support.ValidationSupportContext;
|
||||
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||
import org.hl7.fhir.r4.model.CodeType;
|
||||
import org.hl7.fhir.r4.model.ValueSet;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class InMemoryTerminologyServerValidationSupportTest {
|
||||
|
@ -54,5 +58,59 @@ class InMemoryTerminologyServerValidationSupportTest {
|
|||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidateCodeDstu2() {
|
||||
FhirContext ctxDstu2 = FhirContext.forDstu2Hl7Org();
|
||||
PrePopulatedValidationSupportDstu2 dstu2PrePopulated = new PrePopulatedValidationSupportDstu2(ctxDstu2);
|
||||
mySvc = new InMemoryTerminologyServerValidationSupport(ctxDstu2);
|
||||
myDefaultSupport = new DefaultProfileValidationSupport(ctxDstu2);
|
||||
myChain = new ValidationSupportChain(mySvc, dstu2PrePopulated, myDefaultSupport);
|
||||
|
||||
org.hl7.fhir.dstu2.model.ValueSet vs = new org.hl7.fhir.dstu2.model.ValueSet();
|
||||
vs.setUrl("http://vs");
|
||||
vs
|
||||
.getCompose()
|
||||
.addInclude()
|
||||
.setSystem("http://cs")
|
||||
.addConcept(new org.hl7.fhir.dstu2.model.ValueSet.ConceptReferenceComponent(new org.hl7.fhir.dstu2.model.CodeType("code1")))
|
||||
.addConcept(new org.hl7.fhir.dstu2.model.ValueSet.ConceptReferenceComponent(new org.hl7.fhir.dstu2.model.CodeType("code2")));
|
||||
vs.getCodeSystem()
|
||||
.addConcept(new org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent(new org.hl7.fhir.dstu2.model.CodeType("code1")))
|
||||
.addConcept(new org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent(new org.hl7.fhir.dstu2.model.CodeType("code2")));
|
||||
|
||||
dstu2PrePopulated.addValueSet(vs, "http://vs", "http://cs");
|
||||
|
||||
ValidationSupportContext valCtx = new ValidationSupportContext(myChain);
|
||||
ConceptValidationOptions options = new ConceptValidationOptions();
|
||||
|
||||
IValidationSupport.CodeValidationResult outcome = mySvc.validateCode(valCtx, options, "http://cs", "code1", null, "http://vs");
|
||||
assertTrue(outcome.isOk());
|
||||
|
||||
}
|
||||
|
||||
private static class PrePopulatedValidationSupportDstu2 extends PrePopulatedValidationSupport {
|
||||
private final Map<String, IBaseResource> myDstu2ValueSets;
|
||||
|
||||
PrePopulatedValidationSupportDstu2(FhirContext theFhirContext) {
|
||||
super(theFhirContext);
|
||||
myDstu2ValueSets = new HashMap<>();
|
||||
}
|
||||
|
||||
public void addValueSet(org.hl7.fhir.dstu2.model.ValueSet theValueSet, String valueSetUrl, String codeSystemUrl) {
|
||||
myDstu2ValueSets.put(valueSetUrl, theValueSet);
|
||||
myDstu2ValueSets.put(codeSystemUrl, theValueSet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBaseResource fetchValueSet(String theUri) {
|
||||
return myDstu2ValueSets.get(theUri);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBaseResource fetchCodeSystem(String theSystem) {
|
||||
return myDstu2ValueSets.get(theSystem);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue