mirror of
https://github.com/hapifhir/hapi-fhir.git
synced 2025-02-16 09:55:09 +00:00
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
|
@Autowired
|
||||||
private IValidationSupport myValidationSupport;
|
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())) {
|
if (isNotBlank(theCode.getCode())) {
|
||||||
theListToPopulate.add(new FhirVersionIndependentConcept(theSystemString, 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);
|
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;
|
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);
|
foundCodeInChild |= addTreeIfItContainsCode(theSystemString, nextChild, theCode, theListToPopulate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,9 +95,9 @@ public class TermReadSvcDstu2 extends BaseTermReadSvcImpl {
|
|||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void findCodesAbove(org.hl7.fhir.dstu2.model.ValueSet theSystem, String theSystemString, String theCode, List<FhirVersionIndependentConcept> theListToPopulate) {
|
private void findCodesAbove(ca.uhn.fhir.model.dstu2.resource.ValueSet theSystem, String theSystemString, String theCode, List<FhirVersionIndependentConcept> theListToPopulate) {
|
||||||
List<org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent> conceptList = theSystem.getCodeSystem().getConcept();
|
List<ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept> conceptList = theSystem.getCodeSystem().getConcept();
|
||||||
for (org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent next : conceptList) {
|
for (ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept next : conceptList) {
|
||||||
addTreeIfItContainsCode(theSystemString, next, theCode, theListToPopulate);
|
addTreeIfItContainsCode(theSystemString, next, theCode, theListToPopulate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -105,20 +105,20 @@ public class TermReadSvcDstu2 extends BaseTermReadSvcImpl {
|
|||||||
@Override
|
@Override
|
||||||
public List<FhirVersionIndependentConcept> findCodesAboveUsingBuiltInSystems(String theSystem, String theCode) {
|
public List<FhirVersionIndependentConcept> findCodesAboveUsingBuiltInSystems(String theSystem, String theCode) {
|
||||||
ArrayList<FhirVersionIndependentConcept> retVal = new ArrayList<>();
|
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) {
|
if (system != null) {
|
||||||
findCodesAbove(system, theSystem, theCode, retVal);
|
findCodesAbove(system, theSystem, theCode, retVal);
|
||||||
}
|
}
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void findCodesBelow(org.hl7.fhir.dstu2.model.ValueSet theSystem, String theSystemString, String theCode, List<FhirVersionIndependentConcept> theListToPopulate) {
|
private void findCodesBelow(ca.uhn.fhir.model.dstu2.resource.ValueSet theSystem, String theSystemString, String theCode, List<FhirVersionIndependentConcept> theListToPopulate) {
|
||||||
List<org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent> conceptList = theSystem.getCodeSystem().getConcept();
|
List<ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept> conceptList = theSystem.getCodeSystem().getConcept();
|
||||||
findCodesBelow(theSystemString, theCode, theListToPopulate, conceptList);
|
findCodesBelow(theSystemString, theCode, theListToPopulate, conceptList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void findCodesBelow(String theSystemString, String theCode, List<FhirVersionIndependentConcept> theListToPopulate, List<org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent> conceptList) {
|
private void findCodesBelow(String theSystemString, String theCode, List<FhirVersionIndependentConcept> theListToPopulate, List<ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept> conceptList) {
|
||||||
for (org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent next : conceptList) {
|
for (ca.uhn.fhir.model.dstu2.resource.ValueSet.CodeSystemConcept next : conceptList) {
|
||||||
if (theCode.equals(next.getCode())) {
|
if (theCode.equals(next.getCode())) {
|
||||||
addAllChildren(theSystemString, next, theListToPopulate);
|
addAllChildren(theSystemString, next, theListToPopulate);
|
||||||
} else {
|
} else {
|
||||||
@ -130,7 +130,7 @@ public class TermReadSvcDstu2 extends BaseTermReadSvcImpl {
|
|||||||
@Override
|
@Override
|
||||||
public List<FhirVersionIndependentConcept> findCodesBelowUsingBuiltInSystems(String theSystem, String theCode) {
|
public List<FhirVersionIndependentConcept> findCodesBelowUsingBuiltInSystems(String theSystem, String theCode) {
|
||||||
ArrayList<FhirVersionIndependentConcept> retVal = new ArrayList<>();
|
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) {
|
if (system != null) {
|
||||||
findCodesBelow(system, theSystem, theCode, retVal);
|
findCodesBelow(system, theSystem, theCode, retVal);
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,34 @@
|
|||||||
package ca.uhn.fhir.jpa.term;
|
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.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.instance.model.api.IBaseCoding;
|
||||||
import org.hl7.fhir.r4.model.Coding;
|
import org.hl7.fhir.r4.model.Coding;
|
||||||
import org.junit.jupiter.api.Test;
|
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;
|
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
|
@Test
|
||||||
public void testToCanonicalCoding() {
|
public void testToCanonicalCoding() {
|
||||||
@ -17,4 +38,70 @@ public class TerminologySvcImplDstu2Test {
|
|||||||
assertEquals("dstuCode", convertedCoding.getCode());
|
assertEquals("dstuCode", convertedCoding.getCode());
|
||||||
assertEquals("dstuSystem", convertedCoding.getSystem());
|
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.DefaultProfileValidationSupport;
|
||||||
import ca.uhn.fhir.context.support.IValidationSupport;
|
import ca.uhn.fhir.context.support.IValidationSupport;
|
||||||
import ca.uhn.fhir.context.support.ValidationSupportContext;
|
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.CodeType;
|
||||||
import org.hl7.fhir.r4.model.ValueSet;
|
import org.hl7.fhir.r4.model.ValueSet;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
class InMemoryTerminologyServerValidationSupportTest {
|
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…
x
Reference in New Issue
Block a user