Handle invalid paths in Consent resource
This commit is contained in:
parent
4fd868afae
commit
c588e01a4d
|
@ -506,19 +506,19 @@ public class ValidationDataUploader extends BaseCommand {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void uploadR4Profiles(FhirContext ctx, IGenericClient client, String name) throws CommandFailureException {
|
private void uploadR4Profiles(FhirContext theContext, IGenericClient theClient, String theName) throws CommandFailureException {
|
||||||
int total;
|
int total;
|
||||||
int count;
|
int count;
|
||||||
org.hl7.fhir.r4.model.Bundle bundle;
|
org.hl7.fhir.r4.model.Bundle bundle;
|
||||||
ourLog.info("Uploading " + name);
|
ourLog.info("Uploading " + theName);
|
||||||
String vsContents;
|
String vsContents;
|
||||||
try {
|
try {
|
||||||
vsContents = IOUtils.toString(ValidationDataUploader.class.getResourceAsStream("/org/hl7/fhir/r4/model/profile/" + name + ".xml"), "UTF-8");
|
vsContents = IOUtils.toString(ValidationDataUploader.class.getResourceAsStream("/org/hl7/fhir/r4/model/" + theName + ".xml"), "UTF-8");
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new CommandFailureException(e.toString());
|
throw new CommandFailureException(e.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
bundle = ctx.newXmlParser().parseResource(org.hl7.fhir.r4.model.Bundle.class, vsContents);
|
bundle = theContext.newXmlParser().parseResource(org.hl7.fhir.r4.model.Bundle.class, vsContents);
|
||||||
filterBundle(bundle);
|
filterBundle(bundle);
|
||||||
total = bundle.getEntry().size();
|
total = bundle.getEntry().size();
|
||||||
count = 1;
|
count = 1;
|
||||||
|
@ -547,9 +547,9 @@ public class ValidationDataUploader extends BaseCommand {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
ourLog.info("Uploading {} StructureDefinition {}/{} : {}", new Object[] {name, count, total, next.getIdElement().getValue()});
|
ourLog.info("Uploading {} StructureDefinition {}/{} : {}", new Object[] {theName, count, total, next.getIdElement().getValue()});
|
||||||
try {
|
try {
|
||||||
client.update().resource(next).execute();
|
theClient.update().resource(next).execute();
|
||||||
} catch (BaseServerResponseException e) {
|
} catch (BaseServerResponseException e) {
|
||||||
ourLog.warn("Server responded HTTP " + e.getStatusCode() + ": " + e.toString());
|
ourLog.warn("Server responded HTTP " + e.getStatusCode() + ": " + e.toString());
|
||||||
}
|
}
|
||||||
|
|
|
@ -511,6 +511,7 @@ public abstract class BaseHapiFhirDao<T extends IBaseResource> implements IDao,
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
protected Set<String> extractResourceLinks(ResourceTable theEntity, IBaseResource theResource, Set<ResourceLink> theLinks, Date theUpdateTime) {
|
protected Set<String> extractResourceLinks(ResourceTable theEntity, IBaseResource theResource, Set<ResourceLink> theLinks, Date theUpdateTime) {
|
||||||
HashSet<String> retVal = new HashSet<>();
|
HashSet<String> retVal = new HashSet<>();
|
||||||
|
String resourceType = theEntity.getResourceType();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For now we don't try to load any of the links in a bundle if it's the actual bundle we're storing..
|
* For now we don't try to load any of the links in a bundle if it's the actual bundle we're storing..
|
||||||
|
@ -580,6 +581,9 @@ public abstract class BaseHapiFhirDao<T extends IBaseResource> implements IDao,
|
||||||
}
|
}
|
||||||
} else if (myContext.getElementDefinition((Class<? extends IBase>) nextObject.getClass()).getName().equals("uri")) {
|
} else if (myContext.getElementDefinition((Class<? extends IBase>) nextObject.getClass()).getName().equals("uri")) {
|
||||||
continue;
|
continue;
|
||||||
|
} else if (resourceType.equals("Consent") && nextPathAndRef.getPath().equals("Consent.source")) {
|
||||||
|
// Consent#source-identifier has a path that isn't typed - This is a one-off to deal with that
|
||||||
|
continue;
|
||||||
} else {
|
} else {
|
||||||
if (!multiType) {
|
if (!multiType) {
|
||||||
if (nextSpDef.getName().equals("sourceuri")) {
|
if (nextSpDef.getName().equals("sourceuri")) {
|
||||||
|
|
|
@ -105,7 +105,8 @@ public class SearchParamExtractorDstu3 extends BaseSearchParamExtractor implemen
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Set<ResourceIndexedSearchParamDate> extractSearchParamDates(ResourceTable theEntity, IBaseResource theResource) {
|
public Set<ResourceIndexedSearchParamDate> extractSearchParamDates(ResourceTable theEntity, IBaseResource theResource) {
|
||||||
HashSet<ResourceIndexedSearchParamDate> retVal = new HashSet<ResourceIndexedSearchParamDate>();
|
HashSet<ResourceIndexedSearchParamDate> retVal = new HashSet<>();
|
||||||
|
String resourceType = theEntity.getResourceType();
|
||||||
|
|
||||||
Collection<RuntimeSearchParam> searchParams = getSearchParams(theResource);
|
Collection<RuntimeSearchParam> searchParams = getSearchParams(theResource);
|
||||||
for (RuntimeSearchParam nextSpDef : searchParams) {
|
for (RuntimeSearchParam nextSpDef : searchParams) {
|
||||||
|
@ -164,6 +165,9 @@ public class SearchParamExtractorDstu3 extends BaseSearchParamExtractor implemen
|
||||||
} else if (nextObject instanceof StringType) {
|
} else if (nextObject instanceof StringType) {
|
||||||
// CarePlan.activitydate can be a string
|
// CarePlan.activitydate can be a string
|
||||||
continue;
|
continue;
|
||||||
|
} else if (resourceType.equals("Consent") && nextPath.equals("Consent.source")) {
|
||||||
|
// Consent#source-identifier has a path that isn't typed - This is a one-off to deal with that
|
||||||
|
continue;
|
||||||
} else {
|
} else {
|
||||||
if (!multiType) {
|
if (!multiType) {
|
||||||
throw new ConfigurationException("Search param " + nextSpDef.getName() + " is of unexpected datatype: " + nextObject.getClass());
|
throw new ConfigurationException("Search param " + nextSpDef.getName() + " is of unexpected datatype: " + nextObject.getClass());
|
||||||
|
|
|
@ -9,9 +9,9 @@ package ca.uhn.fhir.jpa.dao.r4;
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@ -20,12 +20,28 @@ package ca.uhn.fhir.jpa.dao.r4;
|
||||||
* #L%
|
* #L%
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import static org.apache.commons.lang3.StringUtils.isNotBlank;
|
import ca.uhn.fhir.jpa.dao.BaseHapiFhirResourceDao;
|
||||||
|
import ca.uhn.fhir.jpa.dao.IFhirResourceDao;
|
||||||
import java.util.*;
|
import ca.uhn.fhir.jpa.entity.ResourceTable;
|
||||||
|
import ca.uhn.fhir.jpa.util.DeleteConflict;
|
||||||
|
import ca.uhn.fhir.rest.api.EncodingEnum;
|
||||||
|
import ca.uhn.fhir.rest.api.MethodOutcome;
|
||||||
|
import ca.uhn.fhir.rest.api.RestOperationTypeEnum;
|
||||||
|
import ca.uhn.fhir.rest.api.ValidationModeEnum;
|
||||||
|
import ca.uhn.fhir.rest.api.server.RequestDetails;
|
||||||
|
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
|
||||||
|
import ca.uhn.fhir.rest.server.exceptions.PreconditionFailedException;
|
||||||
|
import ca.uhn.fhir.rest.server.exceptions.UnprocessableEntityException;
|
||||||
|
import ca.uhn.fhir.rest.server.interceptor.IServerInterceptor.ActionRequestDetails;
|
||||||
|
import ca.uhn.fhir.validation.FhirValidator;
|
||||||
|
import ca.uhn.fhir.validation.IValidationContext;
|
||||||
|
import ca.uhn.fhir.validation.IValidatorModule;
|
||||||
|
import ca.uhn.fhir.validation.ValidationResult;
|
||||||
import org.hl7.fhir.exceptions.FHIRException;
|
import org.hl7.fhir.exceptions.FHIRException;
|
||||||
import org.hl7.fhir.instance.model.api.*;
|
import org.hl7.fhir.instance.model.api.IAnyResource;
|
||||||
|
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.r4.model.IdType;
|
import org.hl7.fhir.r4.model.IdType;
|
||||||
import org.hl7.fhir.r4.model.OperationOutcome;
|
import org.hl7.fhir.r4.model.OperationOutcome;
|
||||||
import org.hl7.fhir.r4.model.OperationOutcome.IssueSeverity;
|
import org.hl7.fhir.r4.model.OperationOutcome.IssueSeverity;
|
||||||
|
@ -33,20 +49,10 @@ import org.hl7.fhir.r4.model.OperationOutcome.OperationOutcomeIssueComponent;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
|
||||||
import ca.uhn.fhir.context.RuntimeResourceDefinition;
|
import java.util.ArrayList;
|
||||||
import ca.uhn.fhir.context.RuntimeSearchParam;
|
import java.util.List;
|
||||||
import ca.uhn.fhir.jpa.dao.BaseHapiFhirResourceDao;
|
|
||||||
import ca.uhn.fhir.jpa.dao.IFhirResourceDao;
|
import static org.apache.commons.lang3.StringUtils.isNotBlank;
|
||||||
import ca.uhn.fhir.jpa.entity.ResourceTable;
|
|
||||||
import ca.uhn.fhir.jpa.util.DeleteConflict;
|
|
||||||
import ca.uhn.fhir.model.api.Include;
|
|
||||||
import ca.uhn.fhir.model.base.composite.BaseResourceReferenceDt;
|
|
||||||
import ca.uhn.fhir.rest.api.*;
|
|
||||||
import ca.uhn.fhir.rest.api.server.RequestDetails;
|
|
||||||
import ca.uhn.fhir.rest.server.exceptions.*;
|
|
||||||
import ca.uhn.fhir.rest.server.interceptor.IServerInterceptor.ActionRequestDetails;
|
|
||||||
import ca.uhn.fhir.util.FhirTerser;
|
|
||||||
import ca.uhn.fhir.validation.*;
|
|
||||||
|
|
||||||
public class FhirResourceDaoR4<T extends IAnyResource> extends BaseHapiFhirResourceDao<T> {
|
public class FhirResourceDaoR4<T extends IAnyResource> extends BaseHapiFhirResourceDao<T> {
|
||||||
|
|
||||||
|
@ -107,7 +113,7 @@ public class FhirResourceDaoR4<T extends IAnyResource> extends BaseHapiFhirResou
|
||||||
IFhirResourceDao<? extends IBaseResource> dao = getDao(type);
|
IFhirResourceDao<? extends IBaseResource> dao = getDao(type);
|
||||||
resourceToValidateById = dao.read(theId, theRequestDetails);
|
resourceToValidateById = dao.read(theId, theRequestDetails);
|
||||||
}
|
}
|
||||||
|
|
||||||
ValidationResult result;
|
ValidationResult result;
|
||||||
if (theResource == null) {
|
if (theResource == null) {
|
||||||
if (resourceToValidateById != null) {
|
if (resourceToValidateById != null) {
|
||||||
|
|
|
@ -468,6 +468,7 @@ public class SearchParamExtractorR4 extends BaseSearchParamExtractor implements
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String resourceType = theEntity.getResourceType();
|
||||||
String nextPath = nextSpDef.getPath();
|
String nextPath = nextSpDef.getPath();
|
||||||
if (isBlank(nextPath)) {
|
if (isBlank(nextPath)) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -478,8 +479,8 @@ public class SearchParamExtractorR4 extends BaseSearchParamExtractor implements
|
||||||
multiType = true;
|
multiType = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> systems = new ArrayList<String>();
|
List<String> systems = new ArrayList<>();
|
||||||
List<String> codes = new ArrayList<String>();
|
List<String> codes = new ArrayList<>();
|
||||||
|
|
||||||
for (Object nextObject : extractValues(nextPath, theResource)) {
|
for (Object nextObject : extractValues(nextPath, theResource)) {
|
||||||
|
|
||||||
|
@ -555,9 +556,15 @@ public class SearchParamExtractorR4 extends BaseSearchParamExtractor implements
|
||||||
} else if (nextObject instanceof LocationPositionComponent) {
|
} else if (nextObject instanceof LocationPositionComponent) {
|
||||||
ourLog.warn("Position search not currently supported, not indexing location");
|
ourLog.warn("Position search not currently supported, not indexing location");
|
||||||
continue;
|
continue;
|
||||||
|
} else if (nextObject instanceof StructureDefinition.StructureDefinitionContextComponent) {
|
||||||
|
ourLog.warn("StructureDefinition context indexing not currently supported"); // TODO: implement this
|
||||||
|
continue;
|
||||||
|
} else if (resourceType.equals("Consent") && nextPath.equals("Consent.source")) {
|
||||||
|
// Consent#source-identifier has a path that isn't typed - This is a one-off to deal with that
|
||||||
|
continue;
|
||||||
} else {
|
} else {
|
||||||
if (!multiType) {
|
if (!multiType) {
|
||||||
throw new ConfigurationException("Search param " + nextSpDef.getName() + " is of unexpected datatype: " + nextObject.getClass());
|
throw new ConfigurationException("Search param " + nextSpDef.getName() + " with path " + nextPath + " is of unexpected datatype: " + nextObject.getClass());
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,6 +160,9 @@ public abstract class BaseJpaDstu3Test extends BaseJpaTest {
|
||||||
@Qualifier("myOrganizationDaoDstu3")
|
@Qualifier("myOrganizationDaoDstu3")
|
||||||
protected IFhirResourceDao<Organization> myOrganizationDao;
|
protected IFhirResourceDao<Organization> myOrganizationDao;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@Qualifier("myConsentDaoDstu3")
|
||||||
|
protected IFhirResourceDao<Consent> myConsentDao;
|
||||||
|
@Autowired
|
||||||
protected DatabaseBackedPagingProvider myPagingProvider;
|
protected DatabaseBackedPagingProvider myPagingProvider;
|
||||||
@Autowired
|
@Autowired
|
||||||
@Qualifier("myPatientDaoDstu3")
|
@Qualifier("myPatientDaoDstu3")
|
||||||
|
|
|
@ -1,49 +1,53 @@
|
||||||
package ca.uhn.fhir.jpa.dao.dstu3;
|
package ca.uhn.fhir.jpa.dao.dstu3;
|
||||||
|
|
||||||
import static org.apache.commons.lang3.StringUtils.defaultString;
|
import ca.uhn.fhir.jpa.dao.*;
|
||||||
import static org.hamcrest.Matchers.*;
|
import ca.uhn.fhir.jpa.entity.ResourceIndexedSearchParamString;
|
||||||
import static org.junit.Assert.*;
|
import ca.uhn.fhir.jpa.entity.TagTypeEnum;
|
||||||
import static org.mockito.Matchers.eq;
|
import ca.uhn.fhir.model.api.Include;
|
||||||
import static org.mockito.Mockito.*;
|
import ca.uhn.fhir.model.api.ResourceMetadataKeyEnum;
|
||||||
|
import ca.uhn.fhir.model.valueset.BundleEntrySearchModeEnum;
|
||||||
import java.util.*;
|
import ca.uhn.fhir.model.valueset.BundleEntryTransactionMethodEnum;
|
||||||
|
import ca.uhn.fhir.rest.api.Constants;
|
||||||
|
import ca.uhn.fhir.rest.api.*;
|
||||||
|
import ca.uhn.fhir.rest.api.server.IBundleProvider;
|
||||||
|
import ca.uhn.fhir.rest.param.*;
|
||||||
|
import ca.uhn.fhir.rest.server.exceptions.*;
|
||||||
|
import ca.uhn.fhir.rest.server.interceptor.IServerInterceptor.ActionRequestDetails;
|
||||||
|
import ca.uhn.fhir.util.TestUtil;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.commons.lang3.RandomStringUtils;
|
import org.apache.commons.lang3.RandomStringUtils;
|
||||||
import org.hamcrest.Matchers;
|
import org.hamcrest.Matchers;
|
||||||
import org.hamcrest.core.StringContains;
|
import org.hamcrest.core.StringContains;
|
||||||
import org.hl7.fhir.dstu3.model.*;
|
import org.hl7.fhir.dstu3.model.*;
|
||||||
import org.hl7.fhir.dstu3.model.Bundle.*;
|
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.Enumerations.AdministrativeGender;
|
import org.hl7.fhir.dstu3.model.Enumerations.AdministrativeGender;
|
||||||
import org.hl7.fhir.dstu3.model.Enumerations.PublicationStatus;
|
import org.hl7.fhir.dstu3.model.Enumerations.PublicationStatus;
|
||||||
import org.hl7.fhir.dstu3.model.Observation.ObservationStatus;
|
import org.hl7.fhir.dstu3.model.Observation.ObservationStatus;
|
||||||
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity;
|
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity;
|
||||||
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueType;
|
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueType;
|
||||||
import org.hl7.fhir.dstu3.model.Quantity.QuantityComparator;
|
import org.hl7.fhir.dstu3.model.Quantity.QuantityComparator;
|
||||||
import org.hl7.fhir.instance.model.api.*;
|
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.junit.*;
|
import org.junit.*;
|
||||||
import org.mockito.ArgumentCaptor;
|
import org.mockito.ArgumentCaptor;
|
||||||
import org.springframework.transaction.TransactionStatus;
|
import org.springframework.transaction.TransactionStatus;
|
||||||
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
|
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
|
||||||
import org.springframework.transaction.support.TransactionTemplate;
|
import org.springframework.transaction.support.TransactionTemplate;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import java.util.*;
|
||||||
|
|
||||||
import ca.uhn.fhir.jpa.dao.*;
|
import static org.apache.commons.lang3.StringUtils.defaultString;
|
||||||
import ca.uhn.fhir.jpa.entity.*;
|
import static org.hamcrest.Matchers.contains;
|
||||||
import ca.uhn.fhir.model.api.Include;
|
import static org.hamcrest.Matchers.*;
|
||||||
import ca.uhn.fhir.model.api.ResourceMetadataKeyEnum;
|
import static org.junit.Assert.*;
|
||||||
import ca.uhn.fhir.model.valueset.BundleEntrySearchModeEnum;
|
import static org.mockito.Matchers.eq;
|
||||||
import ca.uhn.fhir.model.valueset.BundleEntryTransactionMethodEnum;
|
import static org.mockito.Mockito.*;
|
||||||
import ca.uhn.fhir.rest.api.*;
|
|
||||||
import ca.uhn.fhir.rest.api.Constants;
|
|
||||||
import ca.uhn.fhir.rest.api.server.IBundleProvider;
|
|
||||||
import ca.uhn.fhir.rest.param.*;
|
|
||||||
import ca.uhn.fhir.rest.server.exceptions.*;
|
|
||||||
import ca.uhn.fhir.rest.server.interceptor.IServerInterceptor.ActionRequestDetails;
|
|
||||||
import ca.uhn.fhir.util.TestUtil;
|
|
||||||
|
|
||||||
@SuppressWarnings({ "unchecked", "deprecation" })
|
@SuppressWarnings({"unchecked", "deprecation"})
|
||||||
public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
|
|
||||||
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(FhirResourceDaoDstu3Test.class);
|
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(FhirResourceDaoDstu3Test.class);
|
||||||
|
@ -78,7 +82,7 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void beforeDisableResultReuse() {
|
public void beforeDisableResultReuse() {
|
||||||
myDaoConfig.setReuseCachedSearchResultsForMillis(null);
|
myDaoConfig.setReuseCachedSearchResultsForMillis(null);
|
||||||
|
@ -117,7 +121,6 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void sortCodings(List<Coding> theSecLabels) {
|
private void sortCodings(List<Coding> theSecLabels) {
|
||||||
Collections.sort(theSecLabels, new Comparator<Coding>() {
|
Collections.sort(theSecLabels, new Comparator<Coding>() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -126,7 +129,7 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<UriType> sortIds(List<UriType> theProfiles) {
|
private List<UriType> sortIds(List<UriType> theProfiles) {
|
||||||
ArrayList<UriType> retVal = new ArrayList<UriType>(theProfiles);
|
ArrayList<UriType> retVal = new ArrayList<UriType>(theProfiles);
|
||||||
Collections.sort(retVal, new Comparator<UriType>() {
|
Collections.sort(retVal, new Comparator<UriType>() {
|
||||||
|
@ -137,7 +140,7 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
});
|
});
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCantSearchForDeletedResourceByLanguageOrTag() {
|
public void testCantSearchForDeletedResourceByLanguageOrTag() {
|
||||||
String methodName = "testCantSearchForDeletedResourceByLanguageOrTag";
|
String methodName = "testCantSearchForDeletedResourceByLanguageOrTag";
|
||||||
|
@ -478,8 +481,7 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
myBundleDao.create(bundle, mySrd);
|
myBundleDao.create(bundle, mySrd);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCreateDifferentTypesWithSameForcedId() {
|
public void testCreateDifferentTypesWithSameForcedId() {
|
||||||
String idName = "forcedId";
|
String idName = "forcedId";
|
||||||
|
@ -500,12 +502,11 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
obs = myObservationDao.read(obsId.toUnqualifiedVersionless(), mySrd);
|
obs = myObservationDao.read(obsId.toUnqualifiedVersionless(), mySrd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCreateDuplicateTagsDoesNotCauseDuplicates() {
|
public void testCreateDuplicateTagsDoesNotCauseDuplicates() {
|
||||||
Patient p = new Patient();
|
Patient p = new Patient();
|
||||||
p.setActive(true);
|
p.setActive(true);
|
||||||
|
|
||||||
p.getMeta().addTag().setSystem("FOO").setCode("BAR");
|
p.getMeta().addTag().setSystem("FOO").setCode("BAR");
|
||||||
p.getMeta().addTag().setSystem("FOO").setCode("BAR");
|
p.getMeta().addTag().setSystem("FOO").setCode("BAR");
|
||||||
p.getMeta().addTag().setSystem("FOO").setCode("BAR");
|
p.getMeta().addTag().setSystem("FOO").setCode("BAR");
|
||||||
|
@ -513,9 +514,9 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
p.getMeta().addTag().setSystem("FOO").setCode("BAR");
|
p.getMeta().addTag().setSystem("FOO").setCode("BAR");
|
||||||
p.getMeta().addTag().setSystem("FOO").setCode("BAR");
|
p.getMeta().addTag().setSystem("FOO").setCode("BAR");
|
||||||
p.getMeta().addTag().setSystem("FOO").setCode("BAR");
|
p.getMeta().addTag().setSystem("FOO").setCode("BAR");
|
||||||
|
|
||||||
myPatientDao.create(p);
|
myPatientDao.create(p);
|
||||||
|
|
||||||
new TransactionTemplate(myTxManager).execute(new TransactionCallbackWithoutResult() {
|
new TransactionTemplate(myTxManager).execute(new TransactionCallbackWithoutResult() {
|
||||||
@Override
|
@Override
|
||||||
protected void doInTransactionWithoutResult(TransactionStatus theStatus) {
|
protected void doInTransactionWithoutResult(TransactionStatus theStatus) {
|
||||||
|
@ -523,24 +524,24 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
assertThat(myTagDefinitionDao.findAll(), hasSize(1));
|
assertThat(myTagDefinitionDao.findAll(), hasSize(1));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCreateEmptyTagsIsIgnored() {
|
public void testCreateEmptyTagsIsIgnored() {
|
||||||
Patient p = new Patient();
|
Patient p = new Patient();
|
||||||
p.setActive(true);
|
p.setActive(true);
|
||||||
|
|
||||||
// Add an empty tag
|
// Add an empty tag
|
||||||
p.getMeta().addTag();
|
p.getMeta().addTag();
|
||||||
|
|
||||||
// Add another empty tag
|
// Add another empty tag
|
||||||
p.getMeta().addTag().setSystem("");
|
p.getMeta().addTag().setSystem("");
|
||||||
p.getMeta().addTag().setCode("");
|
p.getMeta().addTag().setCode("");
|
||||||
p.getMeta().addTag().setDisplay("");
|
p.getMeta().addTag().setDisplay("");
|
||||||
|
|
||||||
myPatientDao.create(p);
|
myPatientDao.create(p);
|
||||||
|
|
||||||
new TransactionTemplate(myTxManager).execute(new TransactionCallbackWithoutResult() {
|
new TransactionTemplate(myTxManager).execute(new TransactionCallbackWithoutResult() {
|
||||||
@Override
|
@Override
|
||||||
protected void doInTransactionWithoutResult(TransactionStatus theStatus) {
|
protected void doInTransactionWithoutResult(TransactionStatus theStatus) {
|
||||||
|
@ -548,29 +549,29 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
assertThat(myTagDefinitionDao.findAll(), empty());
|
assertThat(myTagDefinitionDao.findAll(), empty());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCreateLongString() {
|
public void testCreateLongString() {
|
||||||
//@formatter:off
|
//@formatter:off
|
||||||
String input = "<NamingSystem>\n" +
|
String input = "<NamingSystem>\n" +
|
||||||
" <name value=\"NDF-RT (National Drug File – Reference Terminology)\"/>\n" +
|
" <name value=\"NDF-RT (National Drug File – Reference Terminology)\"/>\n" +
|
||||||
" <status value=\"draft\"/>\n" +
|
" <status value=\"draft\"/>\n" +
|
||||||
" <kind value=\"codesystem\"/>\n" +
|
" <kind value=\"codesystem\"/>\n" +
|
||||||
" <publisher value=\"HL7, Inc\"/>\n" +
|
" <publisher value=\"HL7, Inc\"/>\n" +
|
||||||
" <date value=\"2015-08-21\"/>\n" +
|
" <date value=\"2015-08-21\"/>\n" +
|
||||||
" <uniqueId>\n" +
|
" <uniqueId>\n" +
|
||||||
" <type value=\"uri\"/>\n" +
|
" <type value=\"uri\"/>\n" +
|
||||||
" <value value=\"http://hl7.org/fhir/ndfrt\"/>\n" +
|
" <value value=\"http://hl7.org/fhir/ndfrt\"/>\n" +
|
||||||
" <preferred value=\"true\"/>\n" +
|
" <preferred value=\"true\"/>\n" +
|
||||||
" </uniqueId>\n" +
|
" </uniqueId>\n" +
|
||||||
" <uniqueId>\n" +
|
" <uniqueId>\n" +
|
||||||
" <type value=\"oid\"/>\n" +
|
" <type value=\"oid\"/>\n" +
|
||||||
" <value value=\"2.16.840.1.113883.6.209\"/>\n" +
|
" <value value=\"2.16.840.1.113883.6.209\"/>\n" +
|
||||||
" <preferred value=\"false\"/>\n" +
|
" <preferred value=\"false\"/>\n" +
|
||||||
" </uniqueId>\n" +
|
" </uniqueId>\n" +
|
||||||
" </NamingSystem>";
|
" </NamingSystem>";
|
||||||
//@formatter:on
|
//@formatter:on
|
||||||
|
|
||||||
NamingSystem res = myFhirCtx.newXmlParser().parseResource(NamingSystem.class, input);
|
NamingSystem res = myFhirCtx.newXmlParser().parseResource(NamingSystem.class, input);
|
||||||
|
@ -633,9 +634,9 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
Organization org = new Organization();
|
Organization org = new Organization();
|
||||||
org.setActive(true);
|
org.setActive(true);
|
||||||
IIdType orgId = myOrganizationDao.create(org).getId().toUnqualifiedVersionless();
|
IIdType orgId = myOrganizationDao.create(org).getId().toUnqualifiedVersionless();
|
||||||
|
|
||||||
myOrganizationDao.delete(orgId);
|
myOrganizationDao.delete(orgId);
|
||||||
|
|
||||||
Patient p = new Patient();
|
Patient p = new Patient();
|
||||||
p.getManagingOrganization().setReferenceElement(orgId);
|
p.getManagingOrganization().setReferenceElement(orgId);
|
||||||
try {
|
try {
|
||||||
|
@ -809,7 +810,6 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCreateWithInvalidReferenceFailsGracefully() {
|
public void testCreateWithInvalidReferenceFailsGracefully() {
|
||||||
Patient patient = new Patient();
|
Patient patient = new Patient();
|
||||||
|
@ -1088,7 +1088,7 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
patient.addIdentifier().setSystem("ZZZZZZZ").setValue("ZZZZZZZZZ");
|
patient.addIdentifier().setSystem("ZZZZZZZ").setValue("ZZZZZZZZZ");
|
||||||
id2b = myPatientDao.update(patient, mySrd).getId();
|
id2b = myPatientDao.update(patient, mySrd).getId();
|
||||||
}
|
}
|
||||||
ourLog.info("ID1:{} ID2:{} ID2b:{}", new Object[] { id1, id2, id2b });
|
ourLog.info("ID1:{} ID2:{} ID2b:{}", new Object[] {id1, id2, id2b});
|
||||||
|
|
||||||
SearchParameterMap params = new SearchParameterMap();
|
SearchParameterMap params = new SearchParameterMap();
|
||||||
params.setLoadSynchronous(true);
|
params.setLoadSynchronous(true);
|
||||||
|
@ -1697,7 +1697,7 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
preDates.add(new Date());
|
preDates.add(new Date());
|
||||||
Thread.sleep(100);
|
Thread.sleep(100);
|
||||||
patient.setId(id);
|
patient.setId(id);
|
||||||
patient.getName().get(0).getFamilyElement().setValue(methodName + "_i"+i);
|
patient.getName().get(0).getFamilyElement().setValue(methodName + "_i" + i);
|
||||||
ids.add(myPatientDao.update(patient, mySrd).getId().toUnqualified().getValue());
|
ids.add(myPatientDao.update(patient, mySrd).getId().toUnqualified().getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2056,27 +2056,27 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
public void testOrganizationName() {
|
public void testOrganizationName() {
|
||||||
|
|
||||||
//@formatter:off
|
//@formatter:off
|
||||||
String inputStr =
|
String inputStr =
|
||||||
"{" +
|
"{" +
|
||||||
" \"resourceType\":\"Organization\",\n" +
|
" \"resourceType\":\"Organization\",\n" +
|
||||||
" \"extension\":[\n" +
|
" \"extension\":[\n" +
|
||||||
" {\n" +
|
" {\n" +
|
||||||
" \"url\":\"http://fhir.connectinggta.ca/Profile/organization#providerIdPool\",\n" +
|
" \"url\":\"http://fhir.connectinggta.ca/Profile/organization#providerIdPool\",\n" +
|
||||||
" \"valueUri\":\"urn:oid:2.16.840.1.113883.3.239.23.21.1\"\n" +
|
" \"valueUri\":\"urn:oid:2.16.840.1.113883.3.239.23.21.1\"\n" +
|
||||||
" }\n" +
|
" }\n" +
|
||||||
" ],\n" +
|
" ],\n" +
|
||||||
" \"text\":{\n" +
|
" \"text\":{\n" +
|
||||||
" \"status\":\"empty\",\n" +
|
" \"status\":\"empty\",\n" +
|
||||||
" \"div\":\"<div xmlns=\\\"http://www.w3.org/1999/xhtml\\\">No narrative template available for resource profile: http://fhir.connectinggta.ca/Profile/organization</div>\"\n" +
|
" \"div\":\"<div xmlns=\\\"http://www.w3.org/1999/xhtml\\\">No narrative template available for resource profile: http://fhir.connectinggta.ca/Profile/organization</div>\"\n" +
|
||||||
" },\n" +
|
" },\n" +
|
||||||
" \"identifier\":[\n" +
|
" \"identifier\":[\n" +
|
||||||
" {\n" +
|
" {\n" +
|
||||||
" \"use\":\"official\",\n" +
|
" \"use\":\"official\",\n" +
|
||||||
" \"system\":\"urn:cgta:hsp_ids\",\n" +
|
" \"system\":\"urn:cgta:hsp_ids\",\n" +
|
||||||
" \"value\":\"urn:oid:2.16.840.1.113883.3.239.23.21\"\n" +
|
" \"value\":\"urn:oid:2.16.840.1.113883.3.239.23.21\"\n" +
|
||||||
" }\n" +
|
" }\n" +
|
||||||
" ],\n" +
|
" ],\n" +
|
||||||
" \"name\":\"Peterborough Regional Health Centre\"\n" +
|
" \"name\":\"Peterborough Regional Health Centre\"\n" +
|
||||||
"}\n";
|
"}\n";
|
||||||
//@formatter:on
|
//@formatter:on
|
||||||
|
|
||||||
|
@ -2131,7 +2131,7 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
dr01.setSubject(new Reference(patientId01));
|
dr01.setSubject(new Reference(patientId01));
|
||||||
IIdType drId01 = myDiagnosticReportDao.create(dr01, mySrd).getId();
|
IIdType drId01 = myDiagnosticReportDao.create(dr01, mySrd).getId();
|
||||||
|
|
||||||
ourLog.info("P1[{}] P2[{}] O1[{}] O2[{}] D1[{}]", new Object[] { patientId01, patientId02, obsId01, obsId02, drId01 });
|
ourLog.info("P1[{}] P2[{}] O1[{}] O2[{}] D1[{}]", new Object[] {patientId01, patientId02, obsId01, obsId02, drId01});
|
||||||
|
|
||||||
List<Observation> result = toList(myObservationDao.search(new SearchParameterMap(Observation.SP_SUBJECT, new ReferenceParam(patientId01.getIdPart())).setLoadSynchronous(true)));
|
List<Observation> result = toList(myObservationDao.search(new SearchParameterMap(Observation.SP_SUBJECT, new ReferenceParam(patientId01.getIdPart())).setLoadSynchronous(true)));
|
||||||
assertEquals(1, result.size());
|
assertEquals(1, result.size());
|
||||||
|
@ -2141,7 +2141,8 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
assertEquals(1, result.size());
|
assertEquals(1, result.size());
|
||||||
assertEquals(obsId02.getIdPart(), result.get(0).getIdElement().getIdPart());
|
assertEquals(obsId02.getIdPart(), result.get(0).getIdElement().getIdPart());
|
||||||
|
|
||||||
result = toList(myObservationDao.search(new SearchParameterMap(Observation.SP_SUBJECT, new ReferenceParam("999999999999")).setLoadSynchronous(true)));;
|
result = toList(myObservationDao.search(new SearchParameterMap(Observation.SP_SUBJECT, new ReferenceParam("999999999999")).setLoadSynchronous(true)));
|
||||||
|
;
|
||||||
assertEquals(0, result.size());
|
assertEquals(0, result.size());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2224,7 +2225,8 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
long id = outcome.getId().getIdPartAsLong();
|
long id = outcome.getId().getIdPartAsLong();
|
||||||
|
|
||||||
TokenParam value = new TokenParam("urn:system", "001testPersistSearchParams");
|
TokenParam value = new TokenParam("urn:system", "001testPersistSearchParams");
|
||||||
List<Patient> found = toList(myPatientDao.search(new SearchParameterMap(Patient.SP_IDENTIFIER, value).setLoadSynchronous(true)));;
|
List<Patient> found = toList(myPatientDao.search(new SearchParameterMap(Patient.SP_IDENTIFIER, value).setLoadSynchronous(true)));
|
||||||
|
;
|
||||||
assertEquals(1, found.size());
|
assertEquals(1, found.size());
|
||||||
assertEquals(id, found.get(0).getIdElement().getIdPartAsLong().longValue());
|
assertEquals(id, found.get(0).getIdElement().getIdPartAsLong().longValue());
|
||||||
|
|
||||||
|
@ -2797,7 +2799,7 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
pm.setSort(new SortSpec(Patient.SP_BIRTHDATE).setOrder(SortOrderEnum.DESC));
|
pm.setSort(new SortSpec(Patient.SP_BIRTHDATE).setOrder(SortOrderEnum.DESC));
|
||||||
actual = toUnqualifiedVersionlessIds(myPatientDao.search(pm));
|
actual = toUnqualifiedVersionlessIds(myPatientDao.search(pm));
|
||||||
assertEquals(4, actual.size());
|
assertEquals(4, actual.size());
|
||||||
// The first would be better, but JPA doesn't do NULLS LAST
|
// The first would be better, but JPA doesn't do NULLS LAST
|
||||||
// assertThat(actual, contains(id3, id2, id1, id4));
|
// assertThat(actual, contains(id3, id2, id1, id4));
|
||||||
assertThat(actual, contains(id4, id3, id2, id1));
|
assertThat(actual, contains(id4, id3, id2, id1));
|
||||||
|
|
||||||
|
@ -3081,7 +3083,7 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
pm.setSort(new SortSpec(Patient.SP_FAMILY).setOrder(SortOrderEnum.DESC));
|
pm.setSort(new SortSpec(Patient.SP_FAMILY).setOrder(SortOrderEnum.DESC));
|
||||||
actual = toUnqualifiedVersionlessIds(myPatientDao.search(pm));
|
actual = toUnqualifiedVersionlessIds(myPatientDao.search(pm));
|
||||||
assertEquals(4, actual.size());
|
assertEquals(4, actual.size());
|
||||||
// The first would be better, but JPA doesn't do NULLS LAST
|
// The first would be better, but JPA doesn't do NULLS LAST
|
||||||
// assertThat(actual, contains(id3, id2, id1, id4));
|
// assertThat(actual, contains(id3, id2, id1, id4));
|
||||||
assertThat(actual, contains(id4, id3, id2, id1));
|
assertThat(actual, contains(id4, id3, id2, id1));
|
||||||
}
|
}
|
||||||
|
@ -3535,6 +3537,16 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make sure this can upload successfully (indexer failed at one point)
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testUploadConsentWithSourceAttachment() {
|
||||||
|
Consent consent = new Consent();
|
||||||
|
consent.setSource(new Attachment().setUrl("http://foo"));
|
||||||
|
myConsentDao.create(consent);
|
||||||
|
}
|
||||||
|
|
||||||
@AfterClass
|
@AfterClass
|
||||||
public static void afterClassClearContext() {
|
public static void afterClassClearContext() {
|
||||||
TestUtil.clearAllStaticFieldsForUnitTest();
|
TestUtil.clearAllStaticFieldsForUnitTest();
|
||||||
|
@ -3542,7 +3554,7 @@ public class FhirResourceDaoDstu3Test extends BaseJpaDstu3Test {
|
||||||
|
|
||||||
public static void assertConflictException(ResourceVersionConflictException e) {
|
public static void assertConflictException(ResourceVersionConflictException e) {
|
||||||
assertThat(e.getMessage(), matchesPattern(
|
assertThat(e.getMessage(), matchesPattern(
|
||||||
"Unable to delete [a-zA-Z]+/[0-9]+ because at least one resource has a reference to this resource. First reference found was resource [a-zA-Z]+/[0-9]+ in path [a-zA-Z]+.[a-zA-Z]+"));
|
"Unable to delete [a-zA-Z]+/[0-9]+ because at least one resource has a reference to this resource. First reference found was resource [a-zA-Z]+/[0-9]+ in path [a-zA-Z]+.[a-zA-Z]+"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<String> toStringList(List<UriType> theUriType) {
|
private static List<String> toStringList(List<UriType> theUriType) {
|
||||||
|
|
|
@ -212,6 +212,9 @@ public abstract class BaseJpaR4Test extends BaseJpaTest {
|
||||||
@Qualifier("myStructureDefinitionDaoR4")
|
@Qualifier("myStructureDefinitionDaoR4")
|
||||||
protected IFhirResourceDao<StructureDefinition> myStructureDefinitionDao;
|
protected IFhirResourceDao<StructureDefinition> myStructureDefinitionDao;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@Qualifier("myConsentDaoR4")
|
||||||
|
protected IFhirResourceDao<Consent> myConsentDao;
|
||||||
|
@Autowired
|
||||||
@Qualifier("mySubscriptionDaoR4")
|
@Qualifier("mySubscriptionDaoR4")
|
||||||
protected IFhirResourceDaoSubscription<Subscription> mySubscriptionDao;
|
protected IFhirResourceDaoSubscription<Subscription> mySubscriptionDao;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|
|
@ -21,6 +21,7 @@ import com.google.common.collect.Lists;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.commons.lang3.RandomStringUtils;
|
import org.apache.commons.lang3.RandomStringUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.apache.commons.lang3.Validate;
|
||||||
import org.hamcrest.Matchers;
|
import org.hamcrest.Matchers;
|
||||||
import org.hamcrest.core.StringContains;
|
import org.hamcrest.core.StringContains;
|
||||||
import org.hl7.fhir.instance.model.api.IAnyResource;
|
import org.hl7.fhir.instance.model.api.IAnyResource;
|
||||||
|
@ -2966,7 +2967,7 @@ public class FhirResourceDaoR4Test extends BaseJpaR4Test {
|
||||||
pm.setSort(new SortSpec(Patient.SP_BIRTHDATE).setOrder(SortOrderEnum.DESC));
|
pm.setSort(new SortSpec(Patient.SP_BIRTHDATE).setOrder(SortOrderEnum.DESC));
|
||||||
actual = toUnqualifiedVersionlessIds(myPatientDao.search(pm));
|
actual = toUnqualifiedVersionlessIds(myPatientDao.search(pm));
|
||||||
assertEquals(4, actual.size());
|
assertEquals(4, actual.size());
|
||||||
// The first would be better, but JPA doesn't do NULLS LAST
|
// The first would be better, but JPA doesn't do NULLS LAST
|
||||||
// assertThat(actual, contains(id3, id2, id1, id4));
|
// assertThat(actual, contains(id3, id2, id1, id4));
|
||||||
assertThat(actual, contains(id4, id3, id2, id1));
|
assertThat(actual, contains(id4, id3, id2, id1));
|
||||||
|
|
||||||
|
@ -3284,7 +3285,7 @@ public class FhirResourceDaoR4Test extends BaseJpaR4Test {
|
||||||
pm.setSort(new SortSpec(Patient.SP_FAMILY).setOrder(SortOrderEnum.DESC));
|
pm.setSort(new SortSpec(Patient.SP_FAMILY).setOrder(SortOrderEnum.DESC));
|
||||||
actual = toUnqualifiedVersionlessIds(myPatientDao.search(pm));
|
actual = toUnqualifiedVersionlessIds(myPatientDao.search(pm));
|
||||||
assertEquals(4, actual.size());
|
assertEquals(4, actual.size());
|
||||||
// The first would be better, but JPA doesn't do NULLS LAST
|
// The first would be better, but JPA doesn't do NULLS LAST
|
||||||
// assertThat(actual, contains(id3, id2, id1, id4));
|
// assertThat(actual, contains(id3, id2, id1, id4));
|
||||||
assertThat(actual, contains(id4, id3, id2, id1));
|
assertThat(actual, contains(id4, id3, id2, id1));
|
||||||
}
|
}
|
||||||
|
@ -3738,6 +3739,26 @@ public class FhirResourceDaoR4Test extends BaseJpaR4Test {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make sure this can upload successfully (indexer failed at one point)
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testUploadConsentWithSourceAttachment() {
|
||||||
|
Consent consent = new Consent();
|
||||||
|
consent.setSource(new Attachment().setUrl("http://foo"));
|
||||||
|
myConsentDao.create(consent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make sure this can upload successfully (indexer failed at one point)
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testUploadExtensionStructureDefinition() {
|
||||||
|
StructureDefinition ext = myValidationSupport.fetchStructureDefinition(myFhirCtx, "http://hl7.org/fhir/StructureDefinition/familymemberhistory-type");
|
||||||
|
Validate.notNull(ext);
|
||||||
|
myStructureDefinitionDao.update(ext);
|
||||||
|
}
|
||||||
|
|
||||||
@AfterClass
|
@AfterClass
|
||||||
public static void afterClassClearContext() {
|
public static void afterClassClearContext() {
|
||||||
TestUtil.clearAllStaticFieldsForUnitTest();
|
TestUtil.clearAllStaticFieldsForUnitTest();
|
||||||
|
|
|
@ -178,6 +178,12 @@
|
||||||
pull request! These have also been added to the list of definitions uploaded
|
pull request! These have also been added to the list of definitions uploaded
|
||||||
by the CLI "upload-definitions" command.
|
by the CLI "upload-definitions" command.
|
||||||
</action>
|
</action>
|
||||||
|
<action type="fix">
|
||||||
|
A workaround for an invalid search parameter path in the R4 consent
|
||||||
|
resource has been implemented. This path was preventing some Consent
|
||||||
|
resources from successfully being uploaded to the JPA server. Thanks to
|
||||||
|
Anthony Sute for identifying this.
|
||||||
|
</action>
|
||||||
</release>
|
</release>
|
||||||
<release version="3.3.0" date="2018-03-29">
|
<release version="3.3.0" date="2018-03-29">
|
||||||
<action type="add">
|
<action type="add">
|
||||||
|
|
|
@ -60,3 +60,4 @@ cp ~/workspace/fhir/trunk/build/publish/profiles-*.xml hapi-fhir-validatio
|
||||||
cp ~/workspace/fhir/trunk/build/publish/v2-tables.xml hapi-fhir-validation-resources-r4/src/main/resources/org/hl7/fhir/r4/model/valueset/
|
cp ~/workspace/fhir/trunk/build/publish/v2-tables.xml hapi-fhir-validation-resources-r4/src/main/resources/org/hl7/fhir/r4/model/valueset/
|
||||||
cp ~/workspace/fhir/trunk/build/publish/v3-codesystems.xml hapi-fhir-validation-resources-r4/src/main/resources/org/hl7/fhir/r4/model/valueset/
|
cp ~/workspace/fhir/trunk/build/publish/v3-codesystems.xml hapi-fhir-validation-resources-r4/src/main/resources/org/hl7/fhir/r4/model/valueset/
|
||||||
cp ~/workspace/fhir/trunk/build/publish/valuesets.xml hapi-fhir-validation-resources-r4/src/main/resources/org/hl7/fhir/r4/model/valueset/
|
cp ~/workspace/fhir/trunk/build/publish/valuesets.xml hapi-fhir-validation-resources-r4/src/main/resources/org/hl7/fhir/r4/model/valueset/
|
||||||
|
cp ~/workspace/fhir/trunk/build/publish/extension-definitions.xml hapi-fhir-validation-resources-r4/src/main/resources/org/hl7/fhir/r4/model/extension/
|
||||||
|
|
Loading…
Reference in New Issue