Add test case

This commit is contained in:
jamesagnew 2020-04-23 10:37:05 -04:00
parent 371cda280a
commit c994f48ccd
1 changed files with 31 additions and 7 deletions

View File

@ -1,6 +1,8 @@
package ca.uhn.fhir.jpa.dao.r4;
import ca.uhn.fhir.jpa.api.config.DaoConfig;
import ca.uhn.fhir.jpa.api.dao.DaoRegistry;
import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao;
import ca.uhn.fhir.jpa.entity.TermCodeSystemVersion;
import ca.uhn.fhir.jpa.term.api.ITermCodeSystemStorageSvc;
import ca.uhn.fhir.jpa.term.api.ITermReadSvc;
@ -17,10 +19,10 @@ import ca.uhn.fhir.util.StopWatch;
import ca.uhn.fhir.util.TestUtil;
import ca.uhn.fhir.validation.IValidatorModule;
import org.apache.commons.io.IOUtils;
import org.hl7.fhir.common.hapi.validation.validator.FhirInstanceValidator;
import org.hl7.fhir.instance.model.api.IBaseOperationOutcome;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.instance.model.api.IIdType;
import org.hl7.fhir.common.hapi.validation.validator.FhirInstanceValidator;
import org.hl7.fhir.r4.model.*;
import org.hl7.fhir.r4.model.Bundle.BundleEntryComponent;
import org.hl7.fhir.r4.model.Observation.ObservationStatus;
@ -38,9 +40,11 @@ import java.util.Collections;
import static org.awaitility.Awaitility.await;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.in;
import static org.hamcrest.Matchers.not;
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
public class FhirResourceDaoR4ValidateTest extends BaseJpaR4Test {
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(FhirResourceDaoR4ValidateTest.class);
@ -50,6 +54,8 @@ public class FhirResourceDaoR4ValidateTest extends BaseJpaR4Test {
private ITermReadSvc myTermReadSvc;
@Autowired
private ITermCodeSystemStorageSvc myTermCodeSystemStorageSvcc;
@Autowired
private DaoRegistry myDaoRegistry;
/**
* Create a loinc valueset that expands to more results than the expander is willing to do
@ -157,7 +163,7 @@ public class FhirResourceDaoR4ValidateTest extends BaseJpaR4Test {
myValueSetDao.create(vs);
myTermReadSvc.preExpandDeferredValueSetsToTerminologyTables();
await().until(()->myTermReadSvc.isValueSetPreExpandedForCodeValidation(vs));
await().until(() -> myTermReadSvc.isValueSetPreExpandedForCodeValidation(vs));
// Load the profile, which is just the Vital Signs profile modified to accept all loinc codes
// and not just certain ones
@ -215,10 +221,29 @@ public class FhirResourceDaoR4ValidateTest extends BaseJpaR4Test {
}
@Test
public void testValidateCodeableConceptWithNoSystem() {
AllergyIntolerance allergy = new AllergyIntolerance();
allergy.getText().setStatus(Narrative.NarrativeStatus.GENERATED).getDiv().setValue("<div>hi!</div>");
allergy.getClinicalStatus().addCoding().setSystem(null).setCode("active").setDisplay("Active");
allergy.getVerificationStatus().addCoding().setSystem("http://terminology.hl7.org/CodeSystem/allergyintolerance-verification").setCode("confirmed").setDisplay("Confirmed");
allergy.setPatient(new Reference("Patient/123"));
private OperationOutcome validateAndReturnOutcome(Observation theObs) {
allergy.addNote()
.setText("This is text")
.setAuthor(new Reference("Patient/123"));
ourLog.info(myFhirCtx.newJsonParser().encodeResourceToString(allergy));
OperationOutcome oo = validateAndReturnOutcome(allergy);
assertThat(encode(oo), containsString("None of the codes provided are in the value set http://hl7.org/fhir/ValueSet/allergyintolerance-clinical"));
}
@SuppressWarnings("unchecked")
private <T extends IBaseResource> OperationOutcome validateAndReturnOutcome(T theObs) {
IFhirResourceDao<T> dao = (IFhirResourceDao<T>) myDaoRegistry.getResourceDao(theObs.getClass());
try {
MethodOutcome outcome = myObservationDao.validate(theObs, null, null, null, ValidationModeEnum.CREATE, null, mySrd);
MethodOutcome outcome = dao.validate(theObs, null, null, null, ValidationModeEnum.CREATE, null, mySrd);
return (OperationOutcome) outcome.getOperationOutcome();
} catch (PreconditionFailedException e) {
return (OperationOutcome) e.getOperationOutcome();
@ -790,7 +815,6 @@ public class FhirResourceDaoR4ValidateTest extends BaseJpaR4Test {
}
private IBaseResource findResourceByIdInBundle(Bundle vss, String name) {
IBaseResource retVal = null;
for (BundleEntryComponent next : vss.getEntry()) {