Fix test
This commit is contained in:
parent
6357c38180
commit
dbaff992b0
|
@ -44,6 +44,7 @@ import ca.uhn.fhir.jpa.dao.BaseHapiFhirDao;
|
|||
import ca.uhn.fhir.jpa.dao.BaseHapiFhirResourceDao;
|
||||
import ca.uhn.fhir.jpa.dao.FhirResourceDaoDstu2;
|
||||
import ca.uhn.fhir.jpa.dao.SearchParameterMap;
|
||||
import ca.uhn.fhir.jpa.dao.dstu3.FhirResourceDaoDstu3Test;
|
||||
import ca.uhn.fhir.jpa.entity.ResourceIndexedSearchParamString;
|
||||
import ca.uhn.fhir.jpa.entity.TagTypeEnum;
|
||||
import ca.uhn.fhir.model.api.IQueryParameterType;
|
||||
|
@ -804,7 +805,8 @@ public class FhirResourceDaoDstu2Test extends BaseJpaDstu2Test {
|
|||
myOrganizationDao.delete(orgId, mySrd);
|
||||
fail();
|
||||
} catch (ResourceVersionConflictException e) {
|
||||
assertThat(e.getMessage(), containsString("Delete failed because of constraint"));
|
||||
FhirResourceDaoDstu3Test.assertConflictException(e);
|
||||
|
||||
}
|
||||
|
||||
myPatientDao.delete(patId, mySrd);
|
||||
|
|
|
@ -23,67 +23,25 @@ import static org.mockito.Mockito.reset;
|
|||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.commons.lang3.RandomStringUtils;
|
||||
import org.hamcrest.Matchers;
|
||||
import org.hamcrest.core.StringContains;
|
||||
import org.hl7.fhir.dstu3.model.Age;
|
||||
import org.hl7.fhir.dstu3.model.BaseResource;
|
||||
import org.hl7.fhir.dstu3.model.Bundle;
|
||||
import org.hl7.fhir.dstu3.model.*;
|
||||
import org.hl7.fhir.dstu3.model.Bundle.BundleEntryComponent;
|
||||
import org.hl7.fhir.dstu3.model.Bundle.BundleType;
|
||||
import org.hl7.fhir.dstu3.model.Bundle.HTTPVerb;
|
||||
import org.hl7.fhir.dstu3.model.CarePlan;
|
||||
import org.hl7.fhir.dstu3.model.CodeSystem;
|
||||
import org.hl7.fhir.dstu3.model.CodeType;
|
||||
import org.hl7.fhir.dstu3.model.CodeableConcept;
|
||||
import org.hl7.fhir.dstu3.model.Coding;
|
||||
import org.hl7.fhir.dstu3.model.CompartmentDefinition;
|
||||
import org.hl7.fhir.dstu3.model.ConceptMap;
|
||||
import org.hl7.fhir.dstu3.model.Condition;
|
||||
import org.hl7.fhir.dstu3.model.DateTimeType;
|
||||
import org.hl7.fhir.dstu3.model.DateType;
|
||||
import org.hl7.fhir.dstu3.model.Device;
|
||||
import org.hl7.fhir.dstu3.model.DiagnosticReport;
|
||||
import org.hl7.fhir.dstu3.model.Encounter;
|
||||
import org.hl7.fhir.dstu3.model.Enumerations.AdministrativeGender;
|
||||
import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatus;
|
||||
import org.hl7.fhir.dstu3.model.IdType;
|
||||
import org.hl7.fhir.dstu3.model.Meta;
|
||||
import org.hl7.fhir.dstu3.model.NamingSystem;
|
||||
import org.hl7.fhir.dstu3.model.Observation;
|
||||
import org.hl7.fhir.dstu3.model.Observation.ObservationStatus;
|
||||
import org.hl7.fhir.dstu3.model.OperationDefinition;
|
||||
import org.hl7.fhir.dstu3.model.OperationOutcome;
|
||||
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity;
|
||||
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueType;
|
||||
import org.hl7.fhir.dstu3.model.Organization;
|
||||
import org.hl7.fhir.dstu3.model.Patient;
|
||||
import org.hl7.fhir.dstu3.model.Period;
|
||||
import org.hl7.fhir.dstu3.model.Quantity;
|
||||
import org.hl7.fhir.dstu3.model.Quantity.QuantityComparator;
|
||||
import org.hl7.fhir.dstu3.model.Questionnaire;
|
||||
import org.hl7.fhir.dstu3.model.Range;
|
||||
import org.hl7.fhir.dstu3.model.Reference;
|
||||
import org.hl7.fhir.dstu3.model.SimpleQuantity;
|
||||
import org.hl7.fhir.dstu3.model.StringType;
|
||||
import org.hl7.fhir.dstu3.model.StructureDefinition;
|
||||
import org.hl7.fhir.dstu3.model.Timing;
|
||||
import org.hl7.fhir.dstu3.model.UriType;
|
||||
import org.hl7.fhir.instance.model.api.IAnyResource;
|
||||
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||
import org.hl7.fhir.instance.model.api.IIdType;
|
||||
import org.hl7.fhir.instance.model.valuesets.ObservationCategory;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
@ -100,7 +58,6 @@ import ca.uhn.fhir.jpa.entity.TagTypeEnum;
|
|||
import ca.uhn.fhir.model.api.IQueryParameterType;
|
||||
import ca.uhn.fhir.model.api.Include;
|
||||
import ca.uhn.fhir.model.api.ResourceMetadataKeyEnum;
|
||||
import ca.uhn.fhir.model.base.composite.BaseCodingDt;
|
||||
import ca.uhn.fhir.model.dstu.valueset.QuantityCompararatorEnum;
|
||||
import ca.uhn.fhir.model.primitive.IdDt;
|
||||
import ca.uhn.fhir.model.valueset.BundleEntrySearchModeEnum;
|
||||
|
@ -109,34 +66,18 @@ import ca.uhn.fhir.rest.api.MethodOutcome;
|
|||
import ca.uhn.fhir.rest.api.RestOperationTypeEnum;
|
||||
import ca.uhn.fhir.rest.api.SortOrderEnum;
|
||||
import ca.uhn.fhir.rest.api.SortSpec;
|
||||
import ca.uhn.fhir.rest.param.DateParam;
|
||||
import ca.uhn.fhir.rest.param.DateRangeParam;
|
||||
import ca.uhn.fhir.rest.param.QuantityParam;
|
||||
import ca.uhn.fhir.rest.param.ReferenceParam;
|
||||
import ca.uhn.fhir.rest.param.StringParam;
|
||||
import ca.uhn.fhir.rest.param.TokenOrListParam;
|
||||
import ca.uhn.fhir.rest.param.TokenParam;
|
||||
import ca.uhn.fhir.rest.param.*;
|
||||
import ca.uhn.fhir.rest.server.Constants;
|
||||
import ca.uhn.fhir.rest.server.IBundleProvider;
|
||||
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
|
||||
import ca.uhn.fhir.rest.server.exceptions.PreconditionFailedException;
|
||||
import ca.uhn.fhir.rest.server.exceptions.ResourceGoneException;
|
||||
import ca.uhn.fhir.rest.server.exceptions.ResourceNotFoundException;
|
||||
import ca.uhn.fhir.rest.server.exceptions.ResourceVersionConflictException;
|
||||
import ca.uhn.fhir.rest.server.exceptions.UnprocessableEntityException;
|
||||
import ca.uhn.fhir.rest.server.exceptions.*;
|
||||
import ca.uhn.fhir.rest.server.interceptor.IServerInterceptor.ActionRequestDetails;
|
||||
import ca.uhn.fhir.util.TestUtil;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@SuppressWarnings({ "unchecked", "deprecation" })
|
||||
public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||
|
||||
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(FhirResourceDaoDstu3Test.class);
|
||||
|
||||
@AfterClass
|
||||
public static void afterClassClearContext() {
|
||||
TestUtil.clearAllStaticFieldsForUnitTest();
|
||||
}
|
||||
|
||||
private void assertGone(IIdType theId) {
|
||||
try {
|
||||
assertNotGone(theId);
|
||||
|
@ -146,99 +87,6 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteWithHas() {
|
||||
Observation obs1 = new Observation();
|
||||
obs1.setStatus(ObservationStatus.FINAL);
|
||||
IIdType obs1id = myObservationDao.create(obs1).getId().toUnqualifiedVersionless();
|
||||
|
||||
Observation obs2 = new Observation();
|
||||
obs2.setStatus(ObservationStatus.FINAL);
|
||||
IIdType obs2id = myObservationDao.create(obs2).getId().toUnqualifiedVersionless();
|
||||
|
||||
DiagnosticReport rpt = new DiagnosticReport();
|
||||
rpt.addIdentifier().setSystem("foo").setValue("IDENTIFIER");
|
||||
rpt.addResult(new Reference(obs2id));
|
||||
IIdType rptId = myDiagnosticReportDao.create(rpt).getId().toUnqualifiedVersionless();
|
||||
|
||||
myObservationDao.read(obs1id);
|
||||
myObservationDao.read(obs2id);
|
||||
|
||||
try {
|
||||
myObservationDao.deleteByUrl("Observation?_has:DiagnosticReport:result:identifier=foo|IDENTIFIER", mySrd);
|
||||
fail();
|
||||
} catch (ResourceVersionConflictException e) {
|
||||
assertThat(e.getMessage(), matchesPattern("Unable to delete Observation/[0-9]+ because at least one resource has a reference to this resource. First reference found was resource Observation/[0-9]+ in path DiagnosticReport.result"));
|
||||
}
|
||||
|
||||
myObservationDao.read(obs1id);
|
||||
myObservationDao.read(obs2id);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCodeSystemCreateAndDelete() {
|
||||
CodeSystem cs = new CodeSystem();
|
||||
cs.setStatus(ConformanceResourceStatus.DRAFT);
|
||||
IIdType id = myCodeSystemDao.create(cs, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
myCodeSystemDao.delete(id, mySrd);
|
||||
|
||||
assertGone(id.toUnqualifiedVersionless());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIndexConditionWithAllOnsetTypes() {
|
||||
// DateTimeType.class, Age.class, Period.class, Range.class, StringType.class
|
||||
|
||||
Condition c0 = new Condition();
|
||||
c0.setOnset(new DateTimeType("2011-01-01"));
|
||||
IIdType id0 = myConditionDao.create(c0, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
Condition c1 = new Condition();
|
||||
c1.setOnset(new Age().setValue(100L).setCode("AGECODE"));
|
||||
IIdType id1 = myConditionDao.create(c1, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
Condition c2 = new Condition();
|
||||
c2.setOnset(new Period().setStart(new Date()).setEnd(new Date()));
|
||||
IIdType id2 = myConditionDao.create(c2, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
Condition c3 = new Condition();
|
||||
c3.setOnset(new Range().setLow((SimpleQuantity) new SimpleQuantity().setValue(200L)).setHigh((SimpleQuantity) new SimpleQuantity().setValue(300L)));
|
||||
IIdType id3 = myConditionDao.create(c3, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
Condition c4 = new Condition();
|
||||
c4.setOnset(new StringType("FOO"));
|
||||
IIdType id4 = myConditionDao.create(c4, mySrd).getId().toUnqualifiedVersionless();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void testCreateBuiltInProfiles() throws Exception {
|
||||
org.hl7.fhir.dstu3.model.Bundle bundle;
|
||||
String name = "profiles-resources";
|
||||
ourLog.info("Uploading " + name);
|
||||
String vsContents;
|
||||
vsContents = IOUtils.toString(FhirResourceDaoDstu3Test.class.getResourceAsStream("/org/hl7/fhir/instance/model/dstu3/profile/" + name + ".xml"), "UTF-8");
|
||||
|
||||
bundle = myFhirCtx.newXmlParser().parseResource(org.hl7.fhir.dstu3.model.Bundle.class, vsContents);
|
||||
for (BundleEntryComponent i : bundle.getEntry()) {
|
||||
org.hl7.fhir.dstu3.model.Resource next = i.getResource();
|
||||
|
||||
ourLog.debug(myFhirCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(next));
|
||||
if (next instanceof StructureDefinition) {
|
||||
myStructureDefinitionDao.update((StructureDefinition) next, mySrd);
|
||||
} else if (next instanceof CompartmentDefinition) {
|
||||
myCompartmentDefinitionDao.update((CompartmentDefinition) next, mySrd);
|
||||
} else if (next instanceof OperationDefinition) {
|
||||
myOperationDefinitionDao.update((OperationDefinition) next, mySrd);
|
||||
} else {
|
||||
fail(next.getClass().getName());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This gets called from assertGone too! Careful about exceptions...
|
||||
*/
|
||||
|
@ -367,26 +215,6 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateDifferentTypesWithSameForcedId() {
|
||||
String idName = "forcedId";
|
||||
|
||||
Patient pat = new Patient();
|
||||
pat.setId(idName);
|
||||
pat.addName().addFamily("FAM");
|
||||
IIdType patId = myPatientDao.update(pat, mySrd).getId();
|
||||
assertEquals("Patient/" + idName, patId.toUnqualifiedVersionless().getValue());
|
||||
|
||||
Observation obs = new Observation();
|
||||
obs.setId(idName);
|
||||
obs.getCode().addCoding().setSystem("foo").setCode("testCreateDifferentTypesWithSameForcedId");
|
||||
IIdType obsId = myObservationDao.update(obs, mySrd).getId();
|
||||
assertEquals("Observation/" + idName, obsId.toUnqualifiedVersionless().getValue());
|
||||
|
||||
pat = myPatientDao.read(patId.toUnqualifiedVersionless(), mySrd);
|
||||
obs = myObservationDao.read(obsId.toUnqualifiedVersionless(), mySrd);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testChoiceParamDateAlt() {
|
||||
Observation o2 = new Observation();
|
||||
|
@ -432,7 +260,6 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
|||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testChoiceParamDateRange() {
|
||||
Observation o1 = new Observation();
|
||||
|
@ -585,6 +412,108 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCodeSystemCreateAndDelete() {
|
||||
CodeSystem cs = new CodeSystem();
|
||||
cs.setStatus(ConformanceResourceStatus.DRAFT);
|
||||
IIdType id = myCodeSystemDao.create(cs, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
myCodeSystemDao.delete(id, mySrd);
|
||||
|
||||
assertGone(id.toUnqualifiedVersionless());
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void testCreateBuiltInProfiles() throws Exception {
|
||||
org.hl7.fhir.dstu3.model.Bundle bundle;
|
||||
String name = "profiles-resources";
|
||||
ourLog.info("Uploading " + name);
|
||||
String vsContents;
|
||||
vsContents = IOUtils.toString(FhirResourceDaoDstu3Test.class.getResourceAsStream("/org/hl7/fhir/instance/model/dstu3/profile/" + name + ".xml"), "UTF-8");
|
||||
|
||||
bundle = myFhirCtx.newXmlParser().parseResource(org.hl7.fhir.dstu3.model.Bundle.class, vsContents);
|
||||
for (BundleEntryComponent i : bundle.getEntry()) {
|
||||
org.hl7.fhir.dstu3.model.Resource next = i.getResource();
|
||||
|
||||
ourLog.debug(myFhirCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(next));
|
||||
if (next instanceof StructureDefinition) {
|
||||
myStructureDefinitionDao.update((StructureDefinition) next, mySrd);
|
||||
} else if (next instanceof CompartmentDefinition) {
|
||||
myCompartmentDefinitionDao.update((CompartmentDefinition) next, mySrd);
|
||||
} else if (next instanceof OperationDefinition) {
|
||||
myOperationDefinitionDao.update((OperationDefinition) next, mySrd);
|
||||
} else {
|
||||
fail(next.getClass().getName());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateBundleAllowsDocumentAndCollection() {
|
||||
String methodName = "testCreateBundleAllowsDocumentAndCollection";
|
||||
|
||||
Patient p = new Patient();
|
||||
p.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
IIdType pid = myPatientDao.create(p, mySrd).getId();
|
||||
p.setId(pid);
|
||||
ourLog.info("Created patient, got it: {}", pid);
|
||||
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.setType(null);
|
||||
bundle.addEntry().setResource(p).setFullUrl(pid.toUnqualifiedVersionless().getValue());
|
||||
try {
|
||||
myBundleDao.create(bundle, mySrd);
|
||||
fail();
|
||||
} catch (UnprocessableEntityException e) {
|
||||
assertEquals("Unable to store a Bundle resource on this server with a Bundle.type value of: (missing)", e.getMessage());
|
||||
}
|
||||
|
||||
bundle = new Bundle();
|
||||
bundle.setType(BundleType.SEARCHSET);
|
||||
bundle.addEntry().setResource(p).setFullUrl(pid.toUnqualifiedVersionless().getValue());
|
||||
try {
|
||||
myBundleDao.create(bundle, mySrd);
|
||||
fail();
|
||||
} catch (UnprocessableEntityException e) {
|
||||
assertEquals("Unable to store a Bundle resource on this server with a Bundle.type value of: searchset", e.getMessage());
|
||||
}
|
||||
|
||||
bundle = new Bundle();
|
||||
bundle.setType(BundleType.COLLECTION);
|
||||
bundle.addEntry().setResource(p).setFullUrl(pid.toUnqualifiedVersionless().getValue());
|
||||
myBundleDao.create(bundle, mySrd);
|
||||
|
||||
bundle = new Bundle();
|
||||
bundle.setType(BundleType.DOCUMENT);
|
||||
bundle.addEntry().setResource(p).setFullUrl(pid.toUnqualifiedVersionless().getValue());
|
||||
myBundleDao.create(bundle, mySrd);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testCreateDifferentTypesWithSameForcedId() {
|
||||
String idName = "forcedId";
|
||||
|
||||
Patient pat = new Patient();
|
||||
pat.setId(idName);
|
||||
pat.addName().addFamily("FAM");
|
||||
IIdType patId = myPatientDao.update(pat, mySrd).getId();
|
||||
assertEquals("Patient/" + idName, patId.toUnqualifiedVersionless().getValue());
|
||||
|
||||
Observation obs = new Observation();
|
||||
obs.setId(idName);
|
||||
obs.getCode().addCoding().setSystem("foo").setCode("testCreateDifferentTypesWithSameForcedId");
|
||||
IIdType obsId = myObservationDao.update(obs, mySrd).getId();
|
||||
assertEquals("Observation/" + idName, obsId.toUnqualifiedVersionless().getValue());
|
||||
|
||||
pat = myPatientDao.read(patId.toUnqualifiedVersionless(), mySrd);
|
||||
obs = myObservationDao.read(obsId.toUnqualifiedVersionless(), mySrd);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateLongString() {
|
||||
//@formatter:off
|
||||
|
@ -654,7 +583,6 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
|||
p.addIdentifier().setSystem("urn:system").setValue("testCreateTextIdFails");
|
||||
p.addName().addFamily("Hello");
|
||||
|
||||
ArrayList<Coding> tl = new ArrayList<Coding>();
|
||||
p.getMeta().addTag().setSystem(Constants.TAG_SUBSETTED_SYSTEM).setCode(Constants.TAG_SUBSETTED_CODE);
|
||||
|
||||
try {
|
||||
|
@ -675,79 +603,6 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
|||
assertNotEquals("ABC", id);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTimingSearchParams() throws Exception {
|
||||
Date before = new DateTimeType("2011-01-01T10:00:00Z").getValue();
|
||||
Date middle = new DateTimeType("2011-01-02T10:00:00Z").getValue();
|
||||
Date after = new DateTimeType("2011-01-03T10:00:00Z").getValue();
|
||||
|
||||
CarePlan cp = new CarePlan();
|
||||
cp.addActivity().getDetail().setScheduled(new Timing().addEvent(before).addEvent(middle).addEvent(after));
|
||||
cp.addActivity().getDetail();
|
||||
IIdType id = myCarePlanDao.create(cp, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
CarePlan cp2 = new CarePlan();
|
||||
cp2.addActivity().getDetail().setScheduled(new StringType("FOO"));
|
||||
cp2.addActivity().getDetail();
|
||||
IIdType id2 = myCarePlanDao.create(cp2, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
SearchParameterMap params;
|
||||
|
||||
params = new SearchParameterMap();
|
||||
params.add(CarePlan.SP_ACTIVITYDATE, new DateRangeParam("2010-01-01T10:00:00Z", null));
|
||||
assertThat(toUnqualifiedVersionlessIdValues(myCarePlanDao.search(params)), contains(id.getValue()));
|
||||
|
||||
params = new SearchParameterMap();
|
||||
params.add(CarePlan.SP_ACTIVITYDATE, new DateRangeParam("2011-01-01T10:00:00Z", null));
|
||||
assertThat(toUnqualifiedVersionlessIdValues(myCarePlanDao.search(params)), contains(id.getValue()));
|
||||
|
||||
params = new SearchParameterMap();
|
||||
params.add(CarePlan.SP_ACTIVITYDATE, new DateRangeParam("2012-01-01T10:00:00Z", null));
|
||||
assertThat(toUnqualifiedVersionlessIdValues(myCarePlanDao.search(params)), empty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateBundleAllowsDocumentAndCollection() {
|
||||
String methodName = "testCreateBundleAllowsDocumentAndCollection";
|
||||
|
||||
Patient p = new Patient();
|
||||
p.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
IIdType pid = myPatientDao.create(p, mySrd).getId();
|
||||
p.setId(pid);
|
||||
ourLog.info("Created patient, got it: {}", pid);
|
||||
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.setType(null);
|
||||
bundle.addEntry().setResource(p).setFullUrl(pid.toUnqualifiedVersionless().getValue());
|
||||
try {
|
||||
myBundleDao.create(bundle, mySrd);
|
||||
fail();
|
||||
} catch (UnprocessableEntityException e) {
|
||||
assertEquals("Unable to store a Bundle resource on this server with a Bundle.type value of: (missing)", e.getMessage());
|
||||
}
|
||||
|
||||
bundle = new Bundle();
|
||||
bundle.setType(BundleType.SEARCHSET);
|
||||
bundle.addEntry().setResource(p).setFullUrl(pid.toUnqualifiedVersionless().getValue());
|
||||
try {
|
||||
myBundleDao.create(bundle, mySrd);
|
||||
fail();
|
||||
} catch (UnprocessableEntityException e) {
|
||||
assertEquals("Unable to store a Bundle resource on this server with a Bundle.type value of: searchset", e.getMessage());
|
||||
}
|
||||
|
||||
bundle = new Bundle();
|
||||
bundle.setType(BundleType.COLLECTION);
|
||||
bundle.addEntry().setResource(p).setFullUrl(pid.toUnqualifiedVersionless().getValue());
|
||||
myBundleDao.create(bundle, mySrd);
|
||||
|
||||
bundle = new Bundle();
|
||||
bundle.setType(BundleType.DOCUMENT);
|
||||
bundle.addEntry().setResource(p).setFullUrl(pid.toUnqualifiedVersionless().getValue());
|
||||
myBundleDao.create(bundle, mySrd);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateWithIfNoneExistBasic() {
|
||||
String methodName = "testCreateWithIfNoneExistBasic";
|
||||
|
@ -1118,7 +973,7 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
|||
myOrganizationDao.delete(orgId, mySrd);
|
||||
fail();
|
||||
} catch (ResourceVersionConflictException e) {
|
||||
assertThat(e.getMessage(), containsString("Delete failed because of constraint"));
|
||||
assertConflictException(e);
|
||||
}
|
||||
|
||||
myPatientDao.delete(patId, mySrd);
|
||||
|
@ -1235,6 +1090,35 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
|||
assertEquals(id2, gotId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteWithHas() {
|
||||
Observation obs1 = new Observation();
|
||||
obs1.setStatus(ObservationStatus.FINAL);
|
||||
IIdType obs1id = myObservationDao.create(obs1).getId().toUnqualifiedVersionless();
|
||||
|
||||
Observation obs2 = new Observation();
|
||||
obs2.setStatus(ObservationStatus.FINAL);
|
||||
IIdType obs2id = myObservationDao.create(obs2).getId().toUnqualifiedVersionless();
|
||||
|
||||
DiagnosticReport rpt = new DiagnosticReport();
|
||||
rpt.addIdentifier().setSystem("foo").setValue("IDENTIFIER");
|
||||
rpt.addResult(new Reference(obs2id));
|
||||
myDiagnosticReportDao.create(rpt).getId().toUnqualifiedVersionless();
|
||||
|
||||
myObservationDao.read(obs1id);
|
||||
myObservationDao.read(obs2id);
|
||||
|
||||
try {
|
||||
myObservationDao.deleteByUrl("Observation?_has:DiagnosticReport:result:identifier=foo|IDENTIFIER", mySrd);
|
||||
fail();
|
||||
} catch (ResourceVersionConflictException e) {
|
||||
assertConflictException(e);
|
||||
}
|
||||
|
||||
myObservationDao.read(obs1id);
|
||||
myObservationDao.read(obs2id);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteWithMatchUrl() {
|
||||
String methodName = "testDeleteWithMatchUrl";
|
||||
|
@ -1302,8 +1186,6 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
|||
public void testDeleteWithMatchUrlChainedProfile() {
|
||||
String methodName = "testDeleteWithMatchUrlChainedProfile";
|
||||
|
||||
List<IdType> profileList = new ArrayList<IdType>();
|
||||
|
||||
Organization org = new Organization();
|
||||
|
||||
org.getMeta().getProfile().add(new IdType("http://foo"));
|
||||
|
@ -1495,37 +1377,6 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
|||
assertNotEquals(idv1, idv2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHistoryWithFromAndTo() throws Exception {
|
||||
String methodName = "testHistoryWithFromAndTo";
|
||||
|
||||
Patient patient = new Patient();
|
||||
patient.addName().addFamily(methodName);
|
||||
IIdType id = myPatientDao.create(patient, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
List<Date> preDates = Lists.newArrayList();
|
||||
List<String> ids = Lists.newArrayList();
|
||||
for (int i = 0; i < 10; i++) {
|
||||
Thread.sleep(100);
|
||||
preDates.add(new Date());
|
||||
Thread.sleep(100);
|
||||
patient.setId(id);
|
||||
patient.getName().get(0).getFamily().get(0).setValue(methodName + "_i");
|
||||
ids.add(myPatientDao.update(patient, mySrd).getId().toUnqualified().getValue());
|
||||
}
|
||||
|
||||
List<String> idValues;
|
||||
|
||||
idValues = toUnqualifiedIdValues(myPatientDao.history(id, preDates.get(0), preDates.get(3), mySrd));
|
||||
assertThat(idValues, contains(ids.get(2), ids.get(1), ids.get(0)));
|
||||
|
||||
idValues = toUnqualifiedIdValues(myPatientDao.history(preDates.get(0), preDates.get(3), mySrd));
|
||||
assertThat(idValues, contains(ids.get(2), ids.get(1), ids.get(0)));
|
||||
|
||||
idValues = toUnqualifiedIdValues(mySystemDao.history(preDates.get(0), preDates.get(3), mySrd));
|
||||
assertThat(idValues, contains(ids.get(2), ids.get(1), ids.get(0)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHistoryOverMultiplePages() throws Exception {
|
||||
String methodName = "testHistoryOverMultiplePages";
|
||||
|
@ -1676,45 +1527,6 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
|||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHistoryWithFutureSinceDate() throws Exception {
|
||||
|
||||
Date before = new Date();
|
||||
Thread.sleep(10);
|
||||
|
||||
Patient inPatient = new Patient();
|
||||
inPatient.addName().addFamily("version1");
|
||||
inPatient.getMeta().addProfile("http://example.com/1");
|
||||
myPatientDao.create(inPatient, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
Thread.sleep(10);
|
||||
Date after = new Date();
|
||||
|
||||
// No since
|
||||
|
||||
IBundleProvider history = myPatientDao.history((Date)null, null, mySrd);
|
||||
assertEquals(1, history.size());
|
||||
Patient outPatient = (Patient) history.getResources(0, 1).get(0);
|
||||
assertEquals("version1", inPatient.getName().get(0).getFamilyAsSingleString());
|
||||
List<String> profiles = toStringList(outPatient.getMeta().getProfile());
|
||||
assertThat(profiles, contains("http://example.com/1"));
|
||||
|
||||
// Before since
|
||||
|
||||
history = myPatientDao.history(before, null, mySrd);
|
||||
assertEquals(1, history.size());
|
||||
outPatient = (Patient) history.getResources(0, 1).get(0);
|
||||
assertEquals("version1", inPatient.getName().get(0).getFamilyAsSingleString());
|
||||
profiles = toStringList(outPatient.getMeta().getProfile());
|
||||
assertThat(profiles, contains("http://example.com/1"));
|
||||
|
||||
// After since
|
||||
|
||||
history = myPatientDao.history(after, null, mySrd);
|
||||
assertEquals(0, history.size());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHistoryReflectsMetaOperations() throws Exception {
|
||||
Patient inPatient = new Patient();
|
||||
|
@ -1799,6 +1611,76 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
|||
assertEquals(BundleEntryTransactionMethodEnum.POST.getCode(), ResourceMetadataKeyEnum.ENTRY_TRANSACTION_METHOD.get((IAnyResource) entries.get(2)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHistoryWithFromAndTo() throws Exception {
|
||||
String methodName = "testHistoryWithFromAndTo";
|
||||
|
||||
Patient patient = new Patient();
|
||||
patient.addName().addFamily(methodName);
|
||||
IIdType id = myPatientDao.create(patient, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
List<Date> preDates = Lists.newArrayList();
|
||||
List<String> ids = Lists.newArrayList();
|
||||
for (int i = 0; i < 10; i++) {
|
||||
Thread.sleep(100);
|
||||
preDates.add(new Date());
|
||||
Thread.sleep(100);
|
||||
patient.setId(id);
|
||||
patient.getName().get(0).getFamily().get(0).setValue(methodName + "_i");
|
||||
ids.add(myPatientDao.update(patient, mySrd).getId().toUnqualified().getValue());
|
||||
}
|
||||
|
||||
List<String> idValues;
|
||||
|
||||
idValues = toUnqualifiedIdValues(myPatientDao.history(id, preDates.get(0), preDates.get(3), mySrd));
|
||||
assertThat(idValues, contains(ids.get(2), ids.get(1), ids.get(0)));
|
||||
|
||||
idValues = toUnqualifiedIdValues(myPatientDao.history(preDates.get(0), preDates.get(3), mySrd));
|
||||
assertThat(idValues, contains(ids.get(2), ids.get(1), ids.get(0)));
|
||||
|
||||
idValues = toUnqualifiedIdValues(mySystemDao.history(preDates.get(0), preDates.get(3), mySrd));
|
||||
assertThat(idValues, contains(ids.get(2), ids.get(1), ids.get(0)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHistoryWithFutureSinceDate() throws Exception {
|
||||
|
||||
Date before = new Date();
|
||||
Thread.sleep(10);
|
||||
|
||||
Patient inPatient = new Patient();
|
||||
inPatient.addName().addFamily("version1");
|
||||
inPatient.getMeta().addProfile("http://example.com/1");
|
||||
myPatientDao.create(inPatient, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
Thread.sleep(10);
|
||||
Date after = new Date();
|
||||
|
||||
// No since
|
||||
|
||||
IBundleProvider history = myPatientDao.history((Date)null, null, mySrd);
|
||||
assertEquals(1, history.size());
|
||||
Patient outPatient = (Patient) history.getResources(0, 1).get(0);
|
||||
assertEquals("version1", inPatient.getName().get(0).getFamilyAsSingleString());
|
||||
List<String> profiles = toStringList(outPatient.getMeta().getProfile());
|
||||
assertThat(profiles, contains("http://example.com/1"));
|
||||
|
||||
// Before since
|
||||
|
||||
history = myPatientDao.history(before, null, mySrd);
|
||||
assertEquals(1, history.size());
|
||||
outPatient = (Patient) history.getResources(0, 1).get(0);
|
||||
assertEquals("version1", inPatient.getName().get(0).getFamilyAsSingleString());
|
||||
profiles = toStringList(outPatient.getMeta().getProfile());
|
||||
assertThat(profiles, contains("http://example.com/1"));
|
||||
|
||||
// After since
|
||||
|
||||
history = myPatientDao.history(after, null, mySrd);
|
||||
assertEquals(0, history.size());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHistoryWithInvalidId() throws Exception {
|
||||
try {
|
||||
|
@ -1879,6 +1761,31 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIndexConditionWithAllOnsetTypes() {
|
||||
// DateTimeType.class, Age.class, Period.class, Range.class, StringType.class
|
||||
|
||||
Condition c0 = new Condition();
|
||||
c0.setOnset(new DateTimeType("2011-01-01"));
|
||||
myConditionDao.create(c0, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
Condition c1 = new Condition();
|
||||
c1.setOnset(new Age().setValue(100L).setCode("AGECODE"));
|
||||
myConditionDao.create(c1, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
Condition c2 = new Condition();
|
||||
c2.setOnset(new Period().setStart(new Date()).setEnd(new Date()));
|
||||
myConditionDao.create(c2, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
Condition c3 = new Condition();
|
||||
c3.setOnset(new Range().setLow((SimpleQuantity) new SimpleQuantity().setValue(200L)).setHigh((SimpleQuantity) new SimpleQuantity().setValue(300L)));
|
||||
myConditionDao.create(c3, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
Condition c4 = new Condition();
|
||||
c4.setOnset(new StringType("FOO"));
|
||||
myConditionDao.create(c4, mySrd).getId().toUnqualifiedVersionless();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInstanceMetaOperations() {
|
||||
String methodName = "testMetaRead";
|
||||
|
@ -1889,11 +1796,9 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
|||
patient.getMeta().addTag("tag_scheme1", "tag_code1", "tag_display1");
|
||||
patient.getMeta().addTag("tag_scheme2", "tag_code2", "tag_display2");
|
||||
|
||||
List<BaseCodingDt> securityLabels = new ArrayList<BaseCodingDt>();
|
||||
patient.getMeta().addSecurity().setSystem("seclabel_sys1").setCode("seclabel_code1").setDisplay("seclabel_dis1");
|
||||
patient.getMeta().addSecurity().setSystem("seclabel_sys2").setCode("seclabel_code2").setDisplay("seclabel_dis2");
|
||||
|
||||
ArrayList<IdType> profiles = new ArrayList<IdType>();
|
||||
patient.getMeta().addProfile(("http://profile/1"));
|
||||
patient.getMeta().addProfile(("http://profile/2"));
|
||||
|
||||
|
@ -3337,6 +3242,37 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
|||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTimingSearchParams() throws Exception {
|
||||
Date before = new DateTimeType("2011-01-01T10:00:00Z").getValue();
|
||||
Date middle = new DateTimeType("2011-01-02T10:00:00Z").getValue();
|
||||
Date after = new DateTimeType("2011-01-03T10:00:00Z").getValue();
|
||||
|
||||
CarePlan cp = new CarePlan();
|
||||
cp.addActivity().getDetail().setScheduled(new Timing().addEvent(before).addEvent(middle).addEvent(after));
|
||||
cp.addActivity().getDetail();
|
||||
IIdType id = myCarePlanDao.create(cp, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
CarePlan cp2 = new CarePlan();
|
||||
cp2.addActivity().getDetail().setScheduled(new StringType("FOO"));
|
||||
cp2.addActivity().getDetail();
|
||||
myCarePlanDao.create(cp2, mySrd).getId().toUnqualifiedVersionless();
|
||||
|
||||
SearchParameterMap params;
|
||||
|
||||
params = new SearchParameterMap();
|
||||
params.add(CarePlan.SP_ACTIVITYDATE, new DateRangeParam("2010-01-01T10:00:00Z", null));
|
||||
assertThat(toUnqualifiedVersionlessIdValues(myCarePlanDao.search(params)), contains(id.getValue()));
|
||||
|
||||
params = new SearchParameterMap();
|
||||
params.add(CarePlan.SP_ACTIVITYDATE, new DateRangeParam("2011-01-01T10:00:00Z", null));
|
||||
assertThat(toUnqualifiedVersionlessIdValues(myCarePlanDao.search(params)), contains(id.getValue()));
|
||||
|
||||
params = new SearchParameterMap();
|
||||
params.add(CarePlan.SP_ACTIVITYDATE, new DateRangeParam("2012-01-01T10:00:00Z", null));
|
||||
assertThat(toUnqualifiedVersionlessIdValues(myCarePlanDao.search(params)), empty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTokenParamWhichIsTooLong() {
|
||||
|
||||
|
@ -3372,6 +3308,15 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
|||
}
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void afterClassClearContext() {
|
||||
TestUtil.clearAllStaticFieldsForUnitTest();
|
||||
}
|
||||
|
||||
public static void assertConflictException(ResourceVersionConflictException e) {
|
||||
assertThat(e.getMessage(), matchesPattern("Unable to delete Observation/[0-9]+ because at least one resource has a reference to this resource. First reference found was resource Observation/[0-9]+ in path DiagnosticReport.result"));
|
||||
}
|
||||
|
||||
private static List<String> toStringList(List<UriType> theUriType) {
|
||||
ArrayList<String> retVal = new ArrayList<String>();
|
||||
for (UriType next : theUriType) {
|
||||
|
|
Loading…
Reference in New Issue