Correctly handle Bundle.entry.base
This commit is contained in:
parent
e536486638
commit
0479a48a41
|
@ -328,7 +328,19 @@ public abstract class BaseParser implements IParser {
|
|||
versionIdPart = ResourceMetadataKeyEnum.VERSION.get((IResource) res);
|
||||
}
|
||||
|
||||
res.setId(new IdDt(baseType.getValueAsString(), resDef.getName(), res.getIdElement().getIdPart(), versionIdPart));
|
||||
String baseUrl = baseType.getValueAsString();
|
||||
String idPart = res.getIdElement().getIdPart();
|
||||
|
||||
String resourceName = resDef.getName();
|
||||
if (!baseUrl.startsWith("cid:") && !baseUrl.startsWith("urn:")) {
|
||||
res.setId(new IdDt(baseUrl, resourceName, idPart, versionIdPart));
|
||||
} else {
|
||||
if (baseUrl.endsWith(":")) {
|
||||
res.setId(new IdDt(baseUrl + idPart));
|
||||
} else {
|
||||
res.setId(new IdDt(baseUrl + ':' + idPart));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1059,8 +1059,6 @@ class ParserState<T> {
|
|||
} else {
|
||||
throw new DataFormatException("Unexpected element in entry: " + theLocalPart);
|
||||
}
|
||||
|
||||
// TODO: handle category
|
||||
}
|
||||
|
||||
protected BundleEntry getEntry() {
|
||||
|
@ -1317,10 +1315,20 @@ class ParserState<T> {
|
|||
String resourceName = myContext.getResourceDefinition(nextResource).getName();
|
||||
String bundleIdPart = nextResource.getId().getIdPart();
|
||||
if (isNotBlank(bundleIdPart)) {
|
||||
String baseUrl;
|
||||
if (isNotBlank(entryBaseUrl)) {
|
||||
nextResource.setId(new IdDt(entryBaseUrl, resourceName, bundleIdPart, version));
|
||||
baseUrl = entryBaseUrl;
|
||||
} else {
|
||||
nextResource.setId(new IdDt(bundleBaseUrl, resourceName, bundleIdPart, version));
|
||||
baseUrl = bundleBaseUrl;
|
||||
}
|
||||
if (!baseUrl.startsWith("cid:") && !baseUrl.startsWith("urn:")) {
|
||||
nextResource.setId(new IdDt(baseUrl, resourceName, bundleIdPart, version));
|
||||
} else {
|
||||
if (baseUrl.endsWith(":")) {
|
||||
nextResource.setId(new IdDt(baseUrl + bundleIdPart));
|
||||
} else {
|
||||
nextResource.setId(new IdDt(baseUrl + ':' + bundleIdPart));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1535,9 +1543,9 @@ class ParserState<T> {
|
|||
try {
|
||||
child = myDefinition.getChildByNameOrThrowDataFormatException(theChildName);
|
||||
} catch (DataFormatException e) {
|
||||
/* This means we've found an element that doesn't exist on the structure.
|
||||
* If the error handler doesn't throw an exception, swallow the element silently along
|
||||
* with any child elements
|
||||
/*
|
||||
* This means we've found an element that doesn't exist on the structure. If the error handler doesn't
|
||||
* throw an exception, swallow the element silently along with any child elements
|
||||
*/
|
||||
myErrorHandler.unknownElement(null, theChildName);
|
||||
push(new SwallowChildrenWholeState(getPreResourceState()));
|
||||
|
@ -2093,7 +2101,7 @@ class ParserState<T> {
|
|||
}
|
||||
}
|
||||
}
|
||||
}else if (theElement instanceof IBaseReference) {
|
||||
} else if (theElement instanceof IBaseReference) {
|
||||
IBaseReference nextRef = (IBaseReference) theElement;
|
||||
String ref = nextRef.getReferenceElement().getValue();
|
||||
if (isNotBlank(ref)) {
|
||||
|
@ -2589,7 +2597,7 @@ class ParserState<T> {
|
|||
|
||||
@Override
|
||||
public void enteringNewElement(String theNamespaceURI, String theLocalPart) throws DataFormatException {
|
||||
// IGNORE - don't handle this as an error, we process these as XML events
|
||||
// IGNORE - don't handle this as an error, we process these as XML events
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -2598,7 +2606,7 @@ class ParserState<T> {
|
|||
myDt.setValueAsString(theValue);
|
||||
return;
|
||||
} else {
|
||||
// IGNORE - don't handle this as an error, we process these as XML events
|
||||
// IGNORE - don't handle this as an error, we process these as XML events
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ import static org.apache.commons.lang3.StringUtils.*;
|
|||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
@ -128,7 +129,7 @@ public class FhirSystemDaoDstu2 extends BaseFhirSystemDao<Bundle> {
|
|||
ourLog.info("Beginning transaction with {} resources", theResources.getEntry().size());
|
||||
long start = System.currentTimeMillis();
|
||||
|
||||
Set<IdDt> allIds = new HashSet<IdDt>();
|
||||
Set<IdDt> allIds = new LinkedHashSet<IdDt>();
|
||||
Map<IdDt, IdDt> idSubstitutions = new HashMap<IdDt, IdDt>();
|
||||
Map<IdDt, DaoMethodOutcome> idToPersistedOutcome = new HashMap<IdDt, DaoMethodOutcome>();
|
||||
|
||||
|
|
|
@ -50,9 +50,103 @@ public class FhirSystemDaoDstu2Test {
|
|||
private static ClassPathXmlApplicationContext ourCtx;
|
||||
private static FhirContext ourFhirContext;
|
||||
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(FhirSystemDaoDstu2Test.class);
|
||||
private static IFhirResourceDao<Observation> ourObservationDao;
|
||||
private static IFhirResourceDao<Patient> ourPatientDao;
|
||||
private static IFhirSystemDao<Bundle> ourSystemDao;
|
||||
private static IFhirResourceDao<Observation> ourObservationDao;
|
||||
|
||||
private void deleteEverything() {
|
||||
FhirSystemDaoDstu2Test.doDeleteEverything(ourSystemDao);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSystemMetaOperation() {
|
||||
deleteEverything();
|
||||
|
||||
MetaDt meta = ourSystemDao.metaGetOperation();
|
||||
List<CodingDt> published = meta.getTag();
|
||||
assertEquals(0, published.size());
|
||||
|
||||
String methodName = "testSystemMetaOperation";
|
||||
IdDt id1;
|
||||
{
|
||||
Patient patient = new Patient();
|
||||
patient.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
patient.addName().addFamily("Tester").addGiven("Joe");
|
||||
TagList tagList = new TagList();
|
||||
tagList.addTag(null, "Dog", "Puppies");
|
||||
ResourceMetadataKeyEnum.TAG_LIST.put(patient, tagList);
|
||||
|
||||
List<BaseCodingDt> securityLabels = new ArrayList<BaseCodingDt>();
|
||||
securityLabels.add(new CodingDt().setSystem("seclabel:sys:1").setCode("seclabel:code:1").setDisplay("seclabel:dis:1"));
|
||||
ResourceMetadataKeyEnum.SECURITY_LABELS.put(patient, securityLabels);
|
||||
|
||||
ArrayList<IdDt> profiles = new ArrayList<IdDt>();
|
||||
profiles.add(new IdDt("http://profile/1"));
|
||||
ResourceMetadataKeyEnum.PROFILES.put(patient, profiles);
|
||||
|
||||
id1 = ourPatientDao.create(patient).getId();
|
||||
}
|
||||
{
|
||||
Patient patient = new Patient();
|
||||
patient.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
patient.addName().addFamily("Tester").addGiven("Joe");
|
||||
TagList tagList = new TagList();
|
||||
tagList.addTag("http://foo", "Cat", "Kittens");
|
||||
ResourceMetadataKeyEnum.TAG_LIST.put(patient, tagList);
|
||||
|
||||
List<BaseCodingDt> securityLabels = new ArrayList<BaseCodingDt>();
|
||||
securityLabels.add(new CodingDt().setSystem("seclabel:sys:2").setCode("seclabel:code:2").setDisplay("seclabel:dis:2"));
|
||||
ResourceMetadataKeyEnum.SECURITY_LABELS.put(patient, securityLabels);
|
||||
|
||||
ArrayList<IdDt> profiles = new ArrayList<IdDt>();
|
||||
profiles.add(new IdDt("http://profile/2"));
|
||||
ResourceMetadataKeyEnum.PROFILES.put(patient, profiles);
|
||||
|
||||
ourPatientDao.create(patient);
|
||||
}
|
||||
|
||||
meta = ourSystemDao.metaGetOperation();
|
||||
published = meta.getTag();
|
||||
assertEquals(2, published.size());
|
||||
assertEquals(null, published.get(0).getSystem());
|
||||
assertEquals("Dog", published.get(0).getCode());
|
||||
assertEquals("Puppies", published.get(0).getDisplay());
|
||||
assertEquals("http://foo", published.get(1).getSystem());
|
||||
assertEquals("Cat", published.get(1).getCode());
|
||||
assertEquals("Kittens", published.get(1).getDisplay());
|
||||
List<CodingDt> secLabels = meta.getSecurity();
|
||||
assertEquals(2, secLabels.size());
|
||||
assertEquals("seclabel:sys:1", secLabels.get(0).getSystemElement().getValue());
|
||||
assertEquals("seclabel:code:1", secLabels.get(0).getCodeElement().getValue());
|
||||
assertEquals("seclabel:dis:1", secLabels.get(0).getDisplayElement().getValue());
|
||||
assertEquals("seclabel:sys:2", secLabels.get(1).getSystemElement().getValue());
|
||||
assertEquals("seclabel:code:2", secLabels.get(1).getCodeElement().getValue());
|
||||
assertEquals("seclabel:dis:2", secLabels.get(1).getDisplayElement().getValue());
|
||||
List<UriDt> profiles = meta.getProfile();
|
||||
assertEquals(2, profiles.size());
|
||||
assertEquals("http://profile/1", profiles.get(0).getValue());
|
||||
assertEquals("http://profile/2", profiles.get(1).getValue());
|
||||
|
||||
ourPatientDao.removeTag(id1, TagTypeEnum.TAG, null, "Dog");
|
||||
ourPatientDao.removeTag(id1, TagTypeEnum.SECURITY_LABEL, "seclabel:sys:1", "seclabel:code:1");
|
||||
ourPatientDao.removeTag(id1, TagTypeEnum.PROFILE, BaseFhirDao.NS_JPA_PROFILE, "http://profile/1");
|
||||
|
||||
meta = ourSystemDao.metaGetOperation();
|
||||
published = meta.getTag();
|
||||
assertEquals(1, published.size());
|
||||
assertEquals("http://foo", published.get(0).getSystem());
|
||||
assertEquals("Cat", published.get(0).getCode());
|
||||
assertEquals("Kittens", published.get(0).getDisplay());
|
||||
secLabels = meta.getSecurity();
|
||||
assertEquals(1, secLabels.size());
|
||||
assertEquals("seclabel:sys:2", secLabels.get(0).getSystemElement().getValue());
|
||||
assertEquals("seclabel:code:2", secLabels.get(0).getCodeElement().getValue());
|
||||
assertEquals("seclabel:dis:2", secLabels.get(0).getDisplayElement().getValue());
|
||||
profiles = meta.getProfile();
|
||||
assertEquals(1, profiles.size());
|
||||
assertEquals("http://profile/2", profiles.get(0).getValue());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionCreateMatchUrlWithOneMatch() {
|
||||
|
@ -96,109 +190,6 @@ public class FhirSystemDaoDstu2Test {
|
|||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionCreateWithInvalidReferenceNumeric() {
|
||||
String methodName = "testTransactionCreateWithInvalidReferenceNumeric";
|
||||
Bundle request = new Bundle();
|
||||
|
||||
Patient p = new Patient();
|
||||
p.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
p.addName().addFamily("Hello");
|
||||
p.getManagingOrganization().setReference("Organization/9999999999999999");
|
||||
request.addEntry().setResource(p).getTransaction().setMethod(HTTPVerbEnum.POST);
|
||||
|
||||
try {
|
||||
ourSystemDao.transaction(request);
|
||||
fail();
|
||||
} catch (InvalidRequestException e) {
|
||||
assertThat(e.getMessage(), containsString("Resource Organization/9999999999999999 not found, specified in path: Patient.managingOrganization"));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionCreateWithInvalidReferenceTextual() {
|
||||
String methodName = "testTransactionCreateWithInvalidReferenceTextual";
|
||||
Bundle request = new Bundle();
|
||||
|
||||
Patient p = new Patient();
|
||||
p.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
p.addName().addFamily("Hello");
|
||||
p.getManagingOrganization().setReference("Organization/" + methodName);
|
||||
request.addEntry().setResource(p).getTransaction().setMethod(HTTPVerbEnum.POST);
|
||||
|
||||
try {
|
||||
ourSystemDao.transaction(request);
|
||||
fail();
|
||||
} catch (InvalidRequestException e) {
|
||||
assertThat(e.getMessage(), containsString("Resource Organization/" + methodName + " not found, specified in path: Patient.managingOrganization"));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionFromBundle() throws Exception {
|
||||
|
||||
InputStream bundleRes = SystemProviderDstu2Test.class.getResourceAsStream("/transaction_link_patient_eve.xml");
|
||||
String bundleStr = IOUtils.toString(bundleRes);
|
||||
Bundle bundle = ourFhirContext.newXmlParser().parseResource(Bundle.class, bundleStr);
|
||||
|
||||
Bundle resp = ourSystemDao.transaction(bundle);
|
||||
|
||||
ourLog.info(ourFhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(resp));
|
||||
|
||||
OperationOutcome oo = (OperationOutcome) resp.getEntry().get(0).getResource();
|
||||
assertThat(oo.getIssue().get(0).getDetailsElement().getValue(), containsString("Transaction completed"));
|
||||
|
||||
assertThat(resp.getEntry().get(1).getTransactionResponse().getLocation(), startsWith("Patient/a555-44-4444/_history/"));
|
||||
assertThat(resp.getEntry().get(2).getTransactionResponse().getLocation(), startsWith("Patient/temp6789/_history/"));
|
||||
assertThat(resp.getEntry().get(3).getTransactionResponse().getLocation(), startsWith("Organization/GHH/_history/"));
|
||||
|
||||
Patient p = ourPatientDao.read(new IdDt("Patient/a555-44-4444/_history/1"));
|
||||
assertEquals("Patient/temp6789", p.getLink().get(0).getOther().getReference().getValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionReadAndSearch() {
|
||||
String methodName = "testTransactionReadAndSearch";
|
||||
|
||||
Patient p = new Patient();
|
||||
p.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
p.setId("Patient/" + methodName);
|
||||
IdDt idv1 = ourPatientDao.update(p).getId();
|
||||
ourLog.info("Created patient, got id: {}", idv1);
|
||||
|
||||
p = new Patient();
|
||||
p.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
p.addName().addFamily("Family Name");
|
||||
p.setId("Patient/" + methodName);
|
||||
IdDt idv2 = ourPatientDao.update(p).getId();
|
||||
ourLog.info("Updated patient, got id: {}", idv2);
|
||||
|
||||
Bundle request = new Bundle();
|
||||
request.addEntry().getTransaction().setMethod(HTTPVerbEnum.GET).setUrl(idv1.toUnqualifiedVersionless().getValue());
|
||||
request.addEntry().getTransaction().setMethod(HTTPVerbEnum.GET).setUrl(idv1.toUnqualified().getValue());
|
||||
request.addEntry().getTransaction().setMethod(HTTPVerbEnum.GET).setUrl("Patient?identifier=urn%3Asystem%7C" + methodName);
|
||||
|
||||
Bundle resp = ourSystemDao.transaction(request);
|
||||
|
||||
assertEquals(4, resp.getEntry().size());
|
||||
|
||||
Entry nextEntry;
|
||||
|
||||
nextEntry = resp.getEntry().get(1);
|
||||
assertEquals(Patient.class, nextEntry.getResource().getClass());
|
||||
assertEquals(idv2.toUnqualified(), nextEntry.getResource().getId().toUnqualified());
|
||||
|
||||
nextEntry = resp.getEntry().get(2);
|
||||
assertEquals(Patient.class, nextEntry.getResource().getClass());
|
||||
assertEquals(idv1.toUnqualified(), nextEntry.getResource().getId().toUnqualified());
|
||||
|
||||
nextEntry = resp.getEntry().get(3);
|
||||
assertEquals(Bundle.class, nextEntry.getResource().getClass());
|
||||
|
||||
Bundle respBundle = (Bundle) nextEntry.getResource();
|
||||
assertEquals(1, respBundle.getTotal().intValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionCreateMatchUrlWithTwoMatch() {
|
||||
String methodName = "testTransactionCreateMatchUrlWithTwoMatch";
|
||||
|
@ -289,6 +280,89 @@ public class FhirSystemDaoDstu2Test {
|
|||
assertThat(patientId, not(containsString("test")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionCreateWithInvalidReferenceNumeric() {
|
||||
String methodName = "testTransactionCreateWithInvalidReferenceNumeric";
|
||||
Bundle request = new Bundle();
|
||||
|
||||
Patient p = new Patient();
|
||||
p.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
p.addName().addFamily("Hello");
|
||||
p.getManagingOrganization().setReference("Organization/9999999999999999");
|
||||
request.addEntry().setResource(p).getTransaction().setMethod(HTTPVerbEnum.POST);
|
||||
|
||||
try {
|
||||
ourSystemDao.transaction(request);
|
||||
fail();
|
||||
} catch (InvalidRequestException e) {
|
||||
assertThat(e.getMessage(), containsString("Resource Organization/9999999999999999 not found, specified in path: Patient.managingOrganization"));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionCreateWithInvalidReferenceTextual() {
|
||||
String methodName = "testTransactionCreateWithInvalidReferenceTextual";
|
||||
Bundle request = new Bundle();
|
||||
|
||||
Patient p = new Patient();
|
||||
p.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
p.addName().addFamily("Hello");
|
||||
p.getManagingOrganization().setReference("Organization/" + methodName);
|
||||
request.addEntry().setResource(p).getTransaction().setMethod(HTTPVerbEnum.POST);
|
||||
|
||||
try {
|
||||
ourSystemDao.transaction(request);
|
||||
fail();
|
||||
} catch (InvalidRequestException e) {
|
||||
assertThat(e.getMessage(), containsString("Resource Organization/" + methodName + " not found, specified in path: Patient.managingOrganization"));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionDeleteByResourceId() {
|
||||
String methodName = "testTransactionDeleteByResourceId";
|
||||
|
||||
Patient p1 = new Patient();
|
||||
p1.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
IdDt id1 = ourPatientDao.create(p1).getId();
|
||||
ourLog.info("Created patient, got it: {}", id1);
|
||||
|
||||
Patient p2 = new Patient();
|
||||
p2.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
p2.setId("Patient/" + methodName);
|
||||
IdDt id2 = ourPatientDao.update(p2).getId();
|
||||
ourLog.info("Created patient, got it: {}", id2);
|
||||
|
||||
Bundle request = new Bundle();
|
||||
|
||||
request.addEntry().getTransaction().setMethod(HTTPVerbEnum.DELETE).setUrl("Patient/" + id1.getIdPart());
|
||||
request.addEntry().getTransaction().setMethod(HTTPVerbEnum.DELETE).setUrl("Patient/" + id2.getIdPart());
|
||||
|
||||
ourPatientDao.read(id1.toVersionless());
|
||||
ourPatientDao.read(id2.toVersionless());
|
||||
|
||||
Bundle resp = ourSystemDao.transaction(request);
|
||||
|
||||
assertEquals(3, resp.getEntry().size());
|
||||
assertEquals("204", resp.getEntry().get(1).getTransactionResponse().getStatus());
|
||||
assertEquals("204", resp.getEntry().get(2).getTransactionResponse().getStatus());
|
||||
|
||||
try {
|
||||
ourPatientDao.read(id1.toVersionless());
|
||||
fail();
|
||||
} catch (ResourceGoneException e) {
|
||||
// good
|
||||
}
|
||||
|
||||
try {
|
||||
ourPatientDao.read(id2.toVersionless());
|
||||
fail();
|
||||
} catch (ResourceGoneException e) {
|
||||
// good
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionDeleteMatchUrlWithOneMatch() {
|
||||
String methodName = "testTransactionDeleteMatchUrlWithOneMatch";
|
||||
|
@ -360,51 +434,6 @@ public class FhirSystemDaoDstu2Test {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionDeleteByResourceId() {
|
||||
String methodName = "testTransactionDeleteByResourceId";
|
||||
|
||||
Patient p1 = new Patient();
|
||||
p1.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
IdDt id1 = ourPatientDao.create(p1).getId();
|
||||
ourLog.info("Created patient, got it: {}", id1);
|
||||
|
||||
Patient p2 = new Patient();
|
||||
p2.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
p2.setId("Patient/" + methodName);
|
||||
IdDt id2 = ourPatientDao.update(p2).getId();
|
||||
ourLog.info("Created patient, got it: {}", id2);
|
||||
|
||||
Bundle request = new Bundle();
|
||||
|
||||
request.addEntry().getTransaction().setMethod(HTTPVerbEnum.DELETE).setUrl("Patient/" + id1.getIdPart());
|
||||
request.addEntry().getTransaction().setMethod(HTTPVerbEnum.DELETE).setUrl("Patient/" + id2.getIdPart());
|
||||
|
||||
ourPatientDao.read(id1.toVersionless());
|
||||
ourPatientDao.read(id2.toVersionless());
|
||||
|
||||
Bundle resp = ourSystemDao.transaction(request);
|
||||
|
||||
assertEquals(3, resp.getEntry().size());
|
||||
assertEquals("204", resp.getEntry().get(1).getTransactionResponse().getStatus());
|
||||
assertEquals("204", resp.getEntry().get(2).getTransactionResponse().getStatus());
|
||||
|
||||
try {
|
||||
ourPatientDao.read(id1.toVersionless());
|
||||
fail();
|
||||
} catch (ResourceGoneException e) {
|
||||
// good
|
||||
}
|
||||
|
||||
try {
|
||||
ourPatientDao.read(id2.toVersionless());
|
||||
fail();
|
||||
} catch (ResourceGoneException e) {
|
||||
// good
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionDeleteMatchUrlWithZeroMatch() {
|
||||
String methodName = "testTransactionDeleteMatchUrlWithZeroMatch";
|
||||
|
@ -463,6 +492,71 @@ public class FhirSystemDaoDstu2Test {
|
|||
ourSystemDao.transaction(request);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionFromBundle() throws Exception {
|
||||
|
||||
InputStream bundleRes = SystemProviderDstu2Test.class.getResourceAsStream("/transaction_link_patient_eve.xml");
|
||||
String bundleStr = IOUtils.toString(bundleRes);
|
||||
Bundle bundle = ourFhirContext.newXmlParser().parseResource(Bundle.class, bundleStr);
|
||||
|
||||
Bundle resp = ourSystemDao.transaction(bundle);
|
||||
|
||||
ourLog.info(ourFhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(resp));
|
||||
|
||||
OperationOutcome oo = (OperationOutcome) resp.getEntry().get(0).getResource();
|
||||
assertThat(oo.getIssue().get(0).getDetailsElement().getValue(), containsString("Transaction completed"));
|
||||
|
||||
assertThat(resp.getEntry().get(1).getTransactionResponse().getLocation(), startsWith("Patient/a555-44-4444/_history/"));
|
||||
assertThat(resp.getEntry().get(2).getTransactionResponse().getLocation(), startsWith("Patient/temp6789/_history/"));
|
||||
assertThat(resp.getEntry().get(3).getTransactionResponse().getLocation(), startsWith("Organization/GHH/_history/"));
|
||||
|
||||
Patient p = ourPatientDao.read(new IdDt("Patient/a555-44-4444/_history/1"));
|
||||
assertEquals("Patient/temp6789", p.getLink().get(0).getOther().getReference().getValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionReadAndSearch() {
|
||||
String methodName = "testTransactionReadAndSearch";
|
||||
|
||||
Patient p = new Patient();
|
||||
p.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
p.setId("Patient/" + methodName);
|
||||
IdDt idv1 = ourPatientDao.update(p).getId();
|
||||
ourLog.info("Created patient, got id: {}", idv1);
|
||||
|
||||
p = new Patient();
|
||||
p.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
p.addName().addFamily("Family Name");
|
||||
p.setId("Patient/" + methodName);
|
||||
IdDt idv2 = ourPatientDao.update(p).getId();
|
||||
ourLog.info("Updated patient, got id: {}", idv2);
|
||||
|
||||
Bundle request = new Bundle();
|
||||
request.addEntry().getTransaction().setMethod(HTTPVerbEnum.GET).setUrl(idv1.toUnqualifiedVersionless().getValue());
|
||||
request.addEntry().getTransaction().setMethod(HTTPVerbEnum.GET).setUrl(idv1.toUnqualified().getValue());
|
||||
request.addEntry().getTransaction().setMethod(HTTPVerbEnum.GET).setUrl("Patient?identifier=urn%3Asystem%7C" + methodName);
|
||||
|
||||
Bundle resp = ourSystemDao.transaction(request);
|
||||
|
||||
assertEquals(4, resp.getEntry().size());
|
||||
|
||||
Entry nextEntry;
|
||||
|
||||
nextEntry = resp.getEntry().get(1);
|
||||
assertEquals(Patient.class, nextEntry.getResource().getClass());
|
||||
assertEquals(idv2.toUnqualified(), nextEntry.getResource().getId().toUnqualified());
|
||||
|
||||
nextEntry = resp.getEntry().get(2);
|
||||
assertEquals(Patient.class, nextEntry.getResource().getClass());
|
||||
assertEquals(idv1.toUnqualified(), nextEntry.getResource().getId().toUnqualified());
|
||||
|
||||
nextEntry = resp.getEntry().get(3);
|
||||
assertEquals(Bundle.class, nextEntry.getResource().getClass());
|
||||
|
||||
Bundle respBundle = (Bundle) nextEntry.getResource();
|
||||
assertEquals(1, respBundle.getTotal().intValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionUpdateMatchUrlWithOneMatch() {
|
||||
String methodName = "testTransactionUpdateMatchUrlWithOneMatch";
|
||||
|
@ -617,99 +711,6 @@ public class FhirSystemDaoDstu2Test {
|
|||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionWithRelativeOidIds() throws Exception {
|
||||
Bundle res = new Bundle();
|
||||
res.setType(BundleTypeEnum.TRANSACTION);
|
||||
|
||||
Patient p1 = new Patient();
|
||||
p1.setId("urn:oid:0.1.2.3");
|
||||
p1.addIdentifier().setSystem("system").setValue("testTransactionWithRelativeOidIds01");
|
||||
res.addEntry().setResource(p1).getTransaction().setMethod(HTTPVerbEnum.POST).setUrl("Patient");
|
||||
|
||||
Observation o1 = new Observation();
|
||||
o1.setId("cid:observation1");
|
||||
o1.addIdentifier().setSystem("system").setValue("testTransactionWithRelativeOidIds02");
|
||||
o1.setSubject(new ResourceReferenceDt("urn:oid:0.1.2.3"));
|
||||
res.addEntry().setResource(o1).getTransaction().setMethod(HTTPVerbEnum.POST).setUrl("Observation");
|
||||
|
||||
Observation o2 = new Observation();
|
||||
o2.setId("cid:observation2");
|
||||
o2.addIdentifier().setSystem("system").setValue("testTransactionWithRelativeOidIds03");
|
||||
o2.setSubject(new ResourceReferenceDt("urn:oid:0.1.2.3"));
|
||||
res.addEntry().setResource(o2).getTransaction().setMethod(HTTPVerbEnum.POST).setUrl("Observation");
|
||||
|
||||
Bundle resp = ourSystemDao.transaction(res);
|
||||
|
||||
ourLog.info(ourFhirContext.newXmlParser().setPrettyPrint(true).encodeResourceToString(resp));
|
||||
|
||||
assertEquals(BundleTypeEnum.TRANSACTION_RESPONSE, resp.getTypeElement().getValueAsEnum());
|
||||
assertEquals(4, resp.getEntry().size());
|
||||
|
||||
assertEquals(OperationOutcome.class, resp.getEntry().get(0).getResource().getClass());
|
||||
|
||||
OperationOutcome outcome = (OperationOutcome) resp.getEntry().get(0).getResource();
|
||||
assertThat(outcome.getIssue().get(1).getDetails(), containsString("Placeholder resource ID \"Patient/urn:oid:0.1.2.3\" was replaced with permanent ID \"Patient/"));
|
||||
|
||||
assertTrue(resp.getEntry().get(1).getTransactionResponse().getLocation(), new IdDt(resp.getEntry().get(1).getTransactionResponse().getLocation()).getIdPart().matches("^[0-9]+$"));
|
||||
assertTrue(resp.getEntry().get(2).getTransactionResponse().getLocation(), new IdDt(resp.getEntry().get(2).getTransactionResponse().getLocation()).getIdPart().matches("^[0-9]+$"));
|
||||
assertTrue(resp.getEntry().get(3).getTransactionResponse().getLocation(), new IdDt(resp.getEntry().get(3).getTransactionResponse().getLocation()).getIdPart().matches("^[0-9]+$"));
|
||||
|
||||
o1 = ourObservationDao.read(new IdDt(resp.getEntry().get(2).getTransactionResponse().getLocation()));
|
||||
o2 = ourObservationDao.read(new IdDt(resp.getEntry().get(3).getTransactionResponse().getLocation()));
|
||||
assertThat(o1.getSubject().getReference().getValue(), endsWith("Patient/" + p1.getId().getIdPart()));
|
||||
assertThat(o2.getSubject().getReference().getValue(), endsWith("Patient/" + p1.getId().getIdPart()));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This is not the correct way to do it, but we'll allow it to be lenient
|
||||
*/
|
||||
@Test
|
||||
public void testTransactionWithRelativeOidIdsQualified() throws Exception {
|
||||
Bundle res = new Bundle();
|
||||
res.setType(BundleTypeEnum.TRANSACTION);
|
||||
|
||||
Patient p1 = new Patient();
|
||||
p1.setId("urn:oid:0.1.2.3");
|
||||
p1.addIdentifier().setSystem("system").setValue("testTransactionWithRelativeOidIds01");
|
||||
res.addEntry().setResource(p1).getTransaction().setMethod(HTTPVerbEnum.POST).setUrl("Patient");
|
||||
|
||||
Observation o1 = new Observation();
|
||||
o1.setId("cid:observation1");
|
||||
o1.addIdentifier().setSystem("system").setValue("testTransactionWithRelativeOidIds02");
|
||||
o1.setSubject(new ResourceReferenceDt("Patient/urn:oid:0.1.2.3"));
|
||||
res.addEntry().setResource(o1).getTransaction().setMethod(HTTPVerbEnum.POST).setUrl("Observation");
|
||||
|
||||
Observation o2 = new Observation();
|
||||
o2.setId("cid:observation2");
|
||||
o2.addIdentifier().setSystem("system").setValue("testTransactionWithRelativeOidIds03");
|
||||
o2.setSubject(new ResourceReferenceDt("Patient/urn:oid:0.1.2.3"));
|
||||
res.addEntry().setResource(o2).getTransaction().setMethod(HTTPVerbEnum.POST).setUrl("Observation");
|
||||
|
||||
Bundle resp = ourSystemDao.transaction(res);
|
||||
|
||||
ourLog.info(ourFhirContext.newXmlParser().setPrettyPrint(true).encodeResourceToString(resp));
|
||||
|
||||
assertEquals(BundleTypeEnum.TRANSACTION_RESPONSE, resp.getTypeElement().getValueAsEnum());
|
||||
assertEquals(4, resp.getEntry().size());
|
||||
|
||||
assertEquals(OperationOutcome.class, resp.getEntry().get(0).getResource().getClass());
|
||||
|
||||
OperationOutcome outcome = (OperationOutcome) resp.getEntry().get(0).getResource();
|
||||
assertThat(outcome.getIssue().get(1).getDetails(), containsString("Placeholder resource ID \"Patient/urn:oid:0.1.2.3\" was replaced with permanent ID \"Patient/"));
|
||||
|
||||
assertTrue(resp.getEntry().get(1).getTransactionResponse().getLocation(), new IdDt(resp.getEntry().get(1).getTransactionResponse().getLocation()).getIdPart().matches("^[0-9]+$"));
|
||||
assertTrue(resp.getEntry().get(2).getTransactionResponse().getLocation(), new IdDt(resp.getEntry().get(2).getTransactionResponse().getLocation()).getIdPart().matches("^[0-9]+$"));
|
||||
assertTrue(resp.getEntry().get(3).getTransactionResponse().getLocation(), new IdDt(resp.getEntry().get(3).getTransactionResponse().getLocation()).getIdPart().matches("^[0-9]+$"));
|
||||
|
||||
o1 = ourObservationDao.read(new IdDt(resp.getEntry().get(2).getTransactionResponse().getLocation()));
|
||||
o2 = ourObservationDao.read(new IdDt(resp.getEntry().get(3).getTransactionResponse().getLocation()));
|
||||
assertThat(o1.getSubject().getReference().getValue(), endsWith("Patient/" + p1.getId().getIdPart()));
|
||||
assertThat(o2.getSubject().getReference().getValue(), endsWith("Patient/" + p1.getId().getIdPart()));
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
// /**
|
||||
|
@ -812,6 +813,99 @@ public class FhirSystemDaoDstu2Test {
|
|||
//
|
||||
// }
|
||||
|
||||
@Test
|
||||
public void testTransactionWithRelativeOidIds() throws Exception {
|
||||
Bundle res = new Bundle();
|
||||
res.setType(BundleTypeEnum.TRANSACTION);
|
||||
|
||||
Patient p1 = new Patient();
|
||||
p1.setId("urn:oid:0.1.2.3");
|
||||
p1.addIdentifier().setSystem("system").setValue("testTransactionWithRelativeOidIds01");
|
||||
res.addEntry().setResource(p1).getTransaction().setMethod(HTTPVerbEnum.POST).setUrl("Patient");
|
||||
|
||||
Observation o1 = new Observation();
|
||||
o1.setId("cid:observation1");
|
||||
o1.addIdentifier().setSystem("system").setValue("testTransactionWithRelativeOidIds02");
|
||||
o1.setSubject(new ResourceReferenceDt("urn:oid:0.1.2.3"));
|
||||
res.addEntry().setResource(o1).getTransaction().setMethod(HTTPVerbEnum.POST).setUrl("Observation");
|
||||
|
||||
Observation o2 = new Observation();
|
||||
o2.setId("cid:observation2");
|
||||
o2.addIdentifier().setSystem("system").setValue("testTransactionWithRelativeOidIds03");
|
||||
o2.setSubject(new ResourceReferenceDt("urn:oid:0.1.2.3"));
|
||||
res.addEntry().setResource(o2).getTransaction().setMethod(HTTPVerbEnum.POST).setUrl("Observation");
|
||||
|
||||
Bundle resp = ourSystemDao.transaction(res);
|
||||
|
||||
ourLog.info(ourFhirContext.newXmlParser().setPrettyPrint(true).encodeResourceToString(resp));
|
||||
|
||||
assertEquals(BundleTypeEnum.TRANSACTION_RESPONSE, resp.getTypeElement().getValueAsEnum());
|
||||
assertEquals(4, resp.getEntry().size());
|
||||
|
||||
assertEquals(OperationOutcome.class, resp.getEntry().get(0).getResource().getClass());
|
||||
|
||||
OperationOutcome outcome = (OperationOutcome) resp.getEntry().get(0).getResource();
|
||||
assertThat(outcome.getIssue().get(1).getDetails(), containsString("Placeholder resource ID \"Patient/urn:oid:0.1.2.3\" was replaced with permanent ID \"Patient/"));
|
||||
|
||||
assertTrue(resp.getEntry().get(1).getTransactionResponse().getLocation(), new IdDt(resp.getEntry().get(1).getTransactionResponse().getLocation()).getIdPart().matches("^[0-9]+$"));
|
||||
assertTrue(resp.getEntry().get(2).getTransactionResponse().getLocation(), new IdDt(resp.getEntry().get(2).getTransactionResponse().getLocation()).getIdPart().matches("^[0-9]+$"));
|
||||
assertTrue(resp.getEntry().get(3).getTransactionResponse().getLocation(), new IdDt(resp.getEntry().get(3).getTransactionResponse().getLocation()).getIdPart().matches("^[0-9]+$"));
|
||||
|
||||
o1 = ourObservationDao.read(new IdDt(resp.getEntry().get(2).getTransactionResponse().getLocation()));
|
||||
o2 = ourObservationDao.read(new IdDt(resp.getEntry().get(3).getTransactionResponse().getLocation()));
|
||||
assertThat(o1.getSubject().getReference().getValue(), endsWith("Patient/" + p1.getId().getIdPart()));
|
||||
assertThat(o2.getSubject().getReference().getValue(), endsWith("Patient/" + p1.getId().getIdPart()));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This is not the correct way to do it, but we'll allow it to be lenient
|
||||
*/
|
||||
@Test
|
||||
public void testTransactionWithRelativeOidIdsQualified() throws Exception {
|
||||
Bundle res = new Bundle();
|
||||
res.setType(BundleTypeEnum.TRANSACTION);
|
||||
|
||||
Patient p1 = new Patient();
|
||||
p1.setId("urn:oid:0.1.2.3");
|
||||
p1.addIdentifier().setSystem("system").setValue("testTransactionWithRelativeOidIds01");
|
||||
res.addEntry().setResource(p1).getTransaction().setMethod(HTTPVerbEnum.POST).setUrl("Patient");
|
||||
|
||||
Observation o1 = new Observation();
|
||||
o1.setId("cid:observation1");
|
||||
o1.addIdentifier().setSystem("system").setValue("testTransactionWithRelativeOidIds02");
|
||||
o1.setSubject(new ResourceReferenceDt("Patient/urn:oid:0.1.2.3"));
|
||||
res.addEntry().setResource(o1).getTransaction().setMethod(HTTPVerbEnum.POST).setUrl("Observation");
|
||||
|
||||
Observation o2 = new Observation();
|
||||
o2.setId("cid:observation2");
|
||||
o2.addIdentifier().setSystem("system").setValue("testTransactionWithRelativeOidIds03");
|
||||
o2.setSubject(new ResourceReferenceDt("Patient/urn:oid:0.1.2.3"));
|
||||
res.addEntry().setResource(o2).getTransaction().setMethod(HTTPVerbEnum.POST).setUrl("Observation");
|
||||
|
||||
Bundle resp = ourSystemDao.transaction(res);
|
||||
|
||||
ourLog.info(ourFhirContext.newXmlParser().setPrettyPrint(true).encodeResourceToString(resp));
|
||||
|
||||
assertEquals(BundleTypeEnum.TRANSACTION_RESPONSE, resp.getTypeElement().getValueAsEnum());
|
||||
assertEquals(4, resp.getEntry().size());
|
||||
|
||||
assertEquals(OperationOutcome.class, resp.getEntry().get(0).getResource().getClass());
|
||||
|
||||
OperationOutcome outcome = (OperationOutcome) resp.getEntry().get(0).getResource();
|
||||
assertThat(outcome.getIssue().get(1).getDetails(), containsString("Placeholder resource ID \"Patient/urn:oid:0.1.2.3\" was replaced with permanent ID \"Patient/"));
|
||||
|
||||
assertTrue(resp.getEntry().get(1).getTransactionResponse().getLocation(), new IdDt(resp.getEntry().get(1).getTransactionResponse().getLocation()).getIdPart().matches("^[0-9]+$"));
|
||||
assertTrue(resp.getEntry().get(2).getTransactionResponse().getLocation(), new IdDt(resp.getEntry().get(2).getTransactionResponse().getLocation()).getIdPart().matches("^[0-9]+$"));
|
||||
assertTrue(resp.getEntry().get(3).getTransactionResponse().getLocation(), new IdDt(resp.getEntry().get(3).getTransactionResponse().getLocation()).getIdPart().matches("^[0-9]+$"));
|
||||
|
||||
o1 = ourObservationDao.read(new IdDt(resp.getEntry().get(2).getTransactionResponse().getLocation()));
|
||||
o2 = ourObservationDao.read(new IdDt(resp.getEntry().get(3).getTransactionResponse().getLocation()));
|
||||
assertThat(o1.getSubject().getReference().getValue(), endsWith("Patient/" + p1.getId().getIdPart()));
|
||||
assertThat(o2.getSubject().getReference().getValue(), endsWith("Patient/" + p1.getId().getIdPart()));
|
||||
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void afterClass() {
|
||||
ourCtx.close();
|
||||
|
@ -828,100 +922,6 @@ public class FhirSystemDaoDstu2Test {
|
|||
ourSystemDao = ourCtx.getBean("mySystemDaoDstu2", IFhirSystemDao.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSystemMetaOperation() {
|
||||
deleteEverything();
|
||||
|
||||
MetaDt meta = ourSystemDao.metaGetOperation();
|
||||
List<CodingDt> published = meta.getTag();
|
||||
assertEquals(0, published.size());
|
||||
|
||||
String methodName = "testSystemMetaOperation";
|
||||
IdDt id1;
|
||||
{
|
||||
Patient patient = new Patient();
|
||||
patient.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
patient.addName().addFamily("Tester").addGiven("Joe");
|
||||
TagList tagList = new TagList();
|
||||
tagList.addTag(null, "Dog", "Puppies");
|
||||
ResourceMetadataKeyEnum.TAG_LIST.put(patient, tagList);
|
||||
|
||||
List<BaseCodingDt> securityLabels = new ArrayList<BaseCodingDt>();
|
||||
securityLabels.add(new CodingDt().setSystem("seclabel:sys:1").setCode("seclabel:code:1").setDisplay("seclabel:dis:1"));
|
||||
ResourceMetadataKeyEnum.SECURITY_LABELS.put(patient, securityLabels);
|
||||
|
||||
ArrayList<IdDt> profiles = new ArrayList<IdDt>();
|
||||
profiles.add(new IdDt("http://profile/1"));
|
||||
ResourceMetadataKeyEnum.PROFILES.put(patient, profiles);
|
||||
|
||||
id1 = ourPatientDao.create(patient).getId();
|
||||
}
|
||||
{
|
||||
Patient patient = new Patient();
|
||||
patient.addIdentifier().setSystem("urn:system").setValue(methodName);
|
||||
patient.addName().addFamily("Tester").addGiven("Joe");
|
||||
TagList tagList = new TagList();
|
||||
tagList.addTag("http://foo", "Cat", "Kittens");
|
||||
ResourceMetadataKeyEnum.TAG_LIST.put(patient, tagList);
|
||||
|
||||
List<BaseCodingDt> securityLabels = new ArrayList<BaseCodingDt>();
|
||||
securityLabels.add(new CodingDt().setSystem("seclabel:sys:2").setCode("seclabel:code:2").setDisplay("seclabel:dis:2"));
|
||||
ResourceMetadataKeyEnum.SECURITY_LABELS.put(patient, securityLabels);
|
||||
|
||||
ArrayList<IdDt> profiles = new ArrayList<IdDt>();
|
||||
profiles.add(new IdDt("http://profile/2"));
|
||||
ResourceMetadataKeyEnum.PROFILES.put(patient, profiles);
|
||||
|
||||
ourPatientDao.create(patient);
|
||||
}
|
||||
|
||||
meta = ourSystemDao.metaGetOperation();
|
||||
published = meta.getTag();
|
||||
assertEquals(2, published.size());
|
||||
assertEquals(null, published.get(0).getSystem());
|
||||
assertEquals("Dog", published.get(0).getCode());
|
||||
assertEquals("Puppies", published.get(0).getDisplay());
|
||||
assertEquals("http://foo", published.get(1).getSystem());
|
||||
assertEquals("Cat", published.get(1).getCode());
|
||||
assertEquals("Kittens", published.get(1).getDisplay());
|
||||
List<CodingDt> secLabels = meta.getSecurity();
|
||||
assertEquals(2, secLabels.size());
|
||||
assertEquals("seclabel:sys:1", secLabels.get(0).getSystemElement().getValue());
|
||||
assertEquals("seclabel:code:1", secLabels.get(0).getCodeElement().getValue());
|
||||
assertEquals("seclabel:dis:1", secLabels.get(0).getDisplayElement().getValue());
|
||||
assertEquals("seclabel:sys:2", secLabels.get(1).getSystemElement().getValue());
|
||||
assertEquals("seclabel:code:2", secLabels.get(1).getCodeElement().getValue());
|
||||
assertEquals("seclabel:dis:2", secLabels.get(1).getDisplayElement().getValue());
|
||||
List<UriDt> profiles = meta.getProfile();
|
||||
assertEquals(2, profiles.size());
|
||||
assertEquals("http://profile/1", profiles.get(0).getValue());
|
||||
assertEquals("http://profile/2", profiles.get(1).getValue());
|
||||
|
||||
ourPatientDao.removeTag(id1, TagTypeEnum.TAG, null, "Dog");
|
||||
ourPatientDao.removeTag(id1, TagTypeEnum.SECURITY_LABEL, "seclabel:sys:1", "seclabel:code:1");
|
||||
ourPatientDao.removeTag(id1, TagTypeEnum.PROFILE, BaseFhirDao.NS_JPA_PROFILE, "http://profile/1");
|
||||
|
||||
meta = ourSystemDao.metaGetOperation();
|
||||
published = meta.getTag();
|
||||
assertEquals(1, published.size());
|
||||
assertEquals("http://foo", published.get(0).getSystem());
|
||||
assertEquals("Cat", published.get(0).getCode());
|
||||
assertEquals("Kittens", published.get(0).getDisplay());
|
||||
secLabels = meta.getSecurity();
|
||||
assertEquals(1, secLabels.size());
|
||||
assertEquals("seclabel:sys:2", secLabels.get(0).getSystemElement().getValue());
|
||||
assertEquals("seclabel:code:2", secLabels.get(0).getCodeElement().getValue());
|
||||
assertEquals("seclabel:dis:2", secLabels.get(0).getDisplayElement().getValue());
|
||||
profiles = meta.getProfile();
|
||||
assertEquals(1, profiles.size());
|
||||
assertEquals("http://profile/2", profiles.get(0).getValue());
|
||||
|
||||
}
|
||||
|
||||
private void deleteEverything() {
|
||||
FhirSystemDaoDstu2Test.doDeleteEverything(ourSystemDao);
|
||||
}
|
||||
|
||||
static void doDeleteEverything(IFhirSystemDao<Bundle> systemDao) {
|
||||
IBundleProvider all = systemDao.history(null);
|
||||
List<IBaseResource> allRes = all.getResources(0, all.size());
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -84,6 +84,11 @@
|
|||
now work, in order to be lenient. Thanks to Bill De Beaubien for
|
||||
reporting!
|
||||
</action>
|
||||
<action type="fix">
|
||||
When parsing Bundles, if Bundle.entry.base is set to "cid:" (for DSTU1)
|
||||
or "urn:uuid:" / "urn:oid:" (for DSTU2) this is now correctly passed as
|
||||
the base in resource.getId()
|
||||
</action>
|
||||
</release>
|
||||
<release version="1.0" date="2015-May-8">
|
||||
<action type="add">
|
||||
|
|
Loading…
Reference in New Issue