current state of $document
This commit is contained in:
parent
38b7b00f52
commit
49bdff1862
|
@ -22,7 +22,6 @@ package ca.uhn.fhir.jpa.dao;
|
||||||
|
|
||||||
import ca.uhn.fhir.model.dstu2.resource.Composition;
|
import ca.uhn.fhir.model.dstu2.resource.Composition;
|
||||||
import ca.uhn.fhir.rest.api.SortSpec;
|
import ca.uhn.fhir.rest.api.SortSpec;
|
||||||
import ca.uhn.fhir.rest.api.server.IBundleProvider;
|
|
||||||
import ca.uhn.fhir.rest.api.server.RequestDetails;
|
import ca.uhn.fhir.rest.api.server.RequestDetails;
|
||||||
import ca.uhn.fhir.rest.param.DateRangeParam;
|
import ca.uhn.fhir.rest.param.DateRangeParam;
|
||||||
import ca.uhn.fhir.rest.server.exceptions.NotImplementedOperationException;
|
import ca.uhn.fhir.rest.server.exceptions.NotImplementedOperationException;
|
||||||
|
@ -38,7 +37,7 @@ public class FhirResourceDaoCompositionDstu2 extends FhirResourceDaoDstu2<Compos
|
||||||
private ISearchParamRegistry mySearchParamRegistry;
|
private ISearchParamRegistry mySearchParamRegistry;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IBundleProvider getDocumentForComposition(HttpServletRequest theServletRequest, IIdType theId, IPrimitiveType<Integer> theCount, DateRangeParam theLastUpdate, SortSpec theSort, RequestDetails theRequestDetails) {
|
public org.hl7.fhir.instance.model.Bundle getDocumentForComposition(HttpServletRequest theServletRequest, IIdType theId, IPrimitiveType<Integer> theCount, DateRangeParam theLastUpdate, SortSpec theSort, RequestDetails theRequestDetails) {
|
||||||
throw new NotImplementedOperationException("$document in DSTU2 is not implemented ");
|
throw new NotImplementedOperationException("$document in DSTU2 is not implemented ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
package ca.uhn.fhir.jpa.dao;
|
package ca.uhn.fhir.jpa.dao;
|
||||||
|
|
||||||
import ca.uhn.fhir.rest.api.SortSpec;
|
import ca.uhn.fhir.rest.api.SortSpec;
|
||||||
import ca.uhn.fhir.rest.api.server.IBundleProvider;
|
|
||||||
import ca.uhn.fhir.rest.api.server.RequestDetails;
|
import ca.uhn.fhir.rest.api.server.RequestDetails;
|
||||||
import ca.uhn.fhir.rest.param.DateRangeParam;
|
import ca.uhn.fhir.rest.param.DateRangeParam;
|
||||||
import ca.uhn.fhir.rest.param.StringAndListParam;
|
import org.hl7.fhir.instance.model.Bundle;
|
||||||
|
import org.hl7.fhir.instance.model.api.IBaseBundle;
|
||||||
import org.hl7.fhir.instance.model.api.IBaseResource;
|
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||||
import org.hl7.fhir.instance.model.api.IIdType;
|
import org.hl7.fhir.instance.model.api.IIdType;
|
||||||
import org.hl7.fhir.instance.model.api.IPrimitiveType;
|
import org.hl7.fhir.instance.model.api.IPrimitiveType;
|
||||||
|
@ -33,6 +33,6 @@ import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
public interface IFhirResourceDaoComposition<T extends IBaseResource> extends IFhirResourceDao<T> {
|
public interface IFhirResourceDaoComposition<T extends IBaseResource> extends IFhirResourceDao<T> {
|
||||||
|
|
||||||
IBundleProvider getDocumentForComposition(HttpServletRequest theServletRequest, IIdType theId, IPrimitiveType<Integer> theCount, DateRangeParam theLastUpdate, SortSpec theSort, RequestDetails theRequestDetails);
|
IBaseBundle getDocumentForComposition(HttpServletRequest theServletRequest, IIdType theId, IPrimitiveType<Integer> theCount, DateRangeParam theLastUpdate, SortSpec theSort, RequestDetails theRequestDetails);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,28 +21,26 @@ package ca.uhn.fhir.jpa.dao.dstu3;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import ca.uhn.fhir.jpa.dao.IFhirResourceDaoComposition;
|
import ca.uhn.fhir.jpa.dao.IFhirResourceDaoComposition;
|
||||||
import ca.uhn.fhir.jpa.dao.IFhirResourceDaoPatient;
|
|
||||||
import ca.uhn.fhir.jpa.dao.ISearchParamRegistry;
|
import ca.uhn.fhir.jpa.dao.ISearchParamRegistry;
|
||||||
import ca.uhn.fhir.jpa.dao.SearchParameterMap;
|
import ca.uhn.fhir.jpa.dao.SearchParameterMap;
|
||||||
import ca.uhn.fhir.jpa.dao.SearchParameterMap.EverythingModeEnum;
|
|
||||||
import ca.uhn.fhir.model.api.IResource;
|
import ca.uhn.fhir.model.api.IResource;
|
||||||
import ca.uhn.fhir.rest.api.CacheControlDirective;
|
|
||||||
import ca.uhn.fhir.rest.api.Constants;
|
|
||||||
import ca.uhn.fhir.rest.api.SortSpec;
|
import ca.uhn.fhir.rest.api.SortSpec;
|
||||||
import ca.uhn.fhir.rest.api.server.IBundleProvider;
|
import ca.uhn.fhir.rest.api.server.IBundleProvider;
|
||||||
import ca.uhn.fhir.rest.api.server.RequestDetails;
|
import ca.uhn.fhir.rest.api.server.RequestDetails;
|
||||||
import ca.uhn.fhir.rest.param.CompositeParam;
|
|
||||||
import ca.uhn.fhir.rest.param.DateRangeParam;
|
import ca.uhn.fhir.rest.param.DateRangeParam;
|
||||||
import ca.uhn.fhir.rest.param.StringAndListParam;
|
|
||||||
import ca.uhn.fhir.rest.param.StringParam;
|
import ca.uhn.fhir.rest.param.StringParam;
|
||||||
|
import org.hl7.fhir.dstu3.model.Bundle;
|
||||||
import org.hl7.fhir.dstu3.model.Composition;
|
import org.hl7.fhir.dstu3.model.Composition;
|
||||||
import org.hl7.fhir.dstu3.model.Patient;
|
import org.hl7.fhir.dstu3.model.Resource;
|
||||||
|
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||||
import org.hl7.fhir.instance.model.api.IIdType;
|
import org.hl7.fhir.instance.model.api.IIdType;
|
||||||
import org.hl7.fhir.instance.model.api.IPrimitiveType;
|
import org.hl7.fhir.instance.model.api.IPrimitiveType;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class FhirResourceDaoCompositionDstu3 extends FhirResourceDaoDstu3<Composition> implements IFhirResourceDaoComposition<Composition> {
|
public class FhirResourceDaoCompositionDstu3 extends FhirResourceDaoDstu3<Composition> implements IFhirResourceDaoComposition<Composition> {
|
||||||
|
|
||||||
|
@ -50,7 +48,7 @@ public class FhirResourceDaoCompositionDstu3 extends FhirResourceDaoDstu3<Compos
|
||||||
private ISearchParamRegistry mySearchParamRegistry;
|
private ISearchParamRegistry mySearchParamRegistry;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IBundleProvider getDocumentForComposition(HttpServletRequest theServletRequest, IIdType theId, IPrimitiveType<Integer> theCount, DateRangeParam theLastUpdate, SortSpec theSort, RequestDetails theRequestDetails) {
|
public Bundle getDocumentForComposition(HttpServletRequest theServletRequest, IIdType theId, IPrimitiveType<Integer> theCount, DateRangeParam theLastUpdate, SortSpec theSort, RequestDetails theRequestDetails) {
|
||||||
SearchParameterMap paramMap = new SearchParameterMap();
|
SearchParameterMap paramMap = new SearchParameterMap();
|
||||||
if (theCount != null) {
|
if (theCount != null) {
|
||||||
paramMap.setCount(theCount.getValue());
|
paramMap.setCount(theCount.getValue());
|
||||||
|
@ -65,7 +63,13 @@ public class FhirResourceDaoCompositionDstu3 extends FhirResourceDaoDstu3<Compos
|
||||||
paramMap.add("_id", new StringParam(theId.getIdPart()));
|
paramMap.add("_id", new StringParam(theId.getIdPart()));
|
||||||
}
|
}
|
||||||
IBundleProvider retVal = search(paramMap);
|
IBundleProvider retVal = search(paramMap);
|
||||||
return retVal;
|
List<IBaseResource> resourceList = retVal.getResources(0, retVal.size());
|
||||||
|
|
||||||
|
Bundle bundle = new Bundle().setType(Bundle.BundleType.DOCUMENT);
|
||||||
|
for (IBaseResource resource : resourceList)
|
||||||
|
bundle.addEntry(new Bundle.BundleEntryComponent().setResource((Resource) resource));
|
||||||
|
|
||||||
|
return bundle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,6 @@ package ca.uhn.fhir.jpa.dao.r4;
|
||||||
import ca.uhn.fhir.jpa.dao.IFhirResourceDaoComposition;
|
import ca.uhn.fhir.jpa.dao.IFhirResourceDaoComposition;
|
||||||
import ca.uhn.fhir.jpa.dao.ISearchParamRegistry;
|
import ca.uhn.fhir.jpa.dao.ISearchParamRegistry;
|
||||||
import ca.uhn.fhir.rest.api.SortSpec;
|
import ca.uhn.fhir.rest.api.SortSpec;
|
||||||
import ca.uhn.fhir.rest.api.server.IBundleProvider;
|
|
||||||
import ca.uhn.fhir.rest.api.server.RequestDetails;
|
import ca.uhn.fhir.rest.api.server.RequestDetails;
|
||||||
import ca.uhn.fhir.rest.param.DateRangeParam;
|
import ca.uhn.fhir.rest.param.DateRangeParam;
|
||||||
import org.hl7.fhir.instance.model.api.IIdType;
|
import org.hl7.fhir.instance.model.api.IIdType;
|
||||||
|
@ -39,7 +38,7 @@ public class FhirResourceDaoCompositionR4 extends FhirResourceDaoR4<Composition>
|
||||||
private ISearchParamRegistry mySearchParamRegistry;
|
private ISearchParamRegistry mySearchParamRegistry;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IBundleProvider getDocumentForComposition(HttpServletRequest theServletRequest, IIdType theId, IPrimitiveType<Integer> theCount, DateRangeParam theLastUpdate, SortSpec theSort, RequestDetails theRequestDetails) {
|
public org.hl7.fhir.instance.model.Bundle getDocumentForComposition(HttpServletRequest theServletRequest, IIdType theId, IPrimitiveType<Integer> theCount, DateRangeParam theLastUpdate, SortSpec theSort, RequestDetails theRequestDetails) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package ca.uhn.fhir.jpa.provider;
|
||||||
import ca.uhn.fhir.jpa.dao.IFhirResourceDaoComposition;
|
import ca.uhn.fhir.jpa.dao.IFhirResourceDaoComposition;
|
||||||
import ca.uhn.fhir.model.api.annotation.Description;
|
import ca.uhn.fhir.model.api.annotation.Description;
|
||||||
|
|
||||||
|
import ca.uhn.fhir.model.dstu2.resource.Bundle;
|
||||||
import ca.uhn.fhir.model.dstu2.resource.Composition;
|
import ca.uhn.fhir.model.dstu2.resource.Composition;
|
||||||
import ca.uhn.fhir.model.valueset.BundleTypeEnum;
|
import ca.uhn.fhir.model.valueset.BundleTypeEnum;
|
||||||
import ca.uhn.fhir.rest.annotation.IdParam;
|
import ca.uhn.fhir.rest.annotation.IdParam;
|
||||||
|
@ -14,6 +15,7 @@ import ca.uhn.fhir.rest.api.SortSpec;
|
||||||
import ca.uhn.fhir.rest.api.server.IBundleProvider;
|
import ca.uhn.fhir.rest.api.server.IBundleProvider;
|
||||||
import ca.uhn.fhir.rest.api.server.RequestDetails;
|
import ca.uhn.fhir.rest.api.server.RequestDetails;
|
||||||
import ca.uhn.fhir.rest.param.DateRangeParam;
|
import ca.uhn.fhir.rest.param.DateRangeParam;
|
||||||
|
import org.hl7.fhir.instance.model.api.IBaseBundle;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
|
|
||||||
|
@ -44,7 +46,7 @@ public class BaseJpaResourceProviderCompositionDstu2 extends JpaResourceProvider
|
||||||
*/
|
*/
|
||||||
//@formatter:off
|
//@formatter:off
|
||||||
@Operation(name = "document", idempotent = true, bundleType=BundleTypeEnum.SEARCHSET)
|
@Operation(name = "document", idempotent = true, bundleType=BundleTypeEnum.SEARCHSET)
|
||||||
public IBundleProvider getDocumentForComposition(
|
public IBaseBundle getDocumentForComposition(
|
||||||
|
|
||||||
javax.servlet.http.HttpServletRequest theServletRequest) {
|
javax.servlet.http.HttpServletRequest theServletRequest) {
|
||||||
//@formatter:on
|
//@formatter:on
|
||||||
|
|
|
@ -14,6 +14,7 @@ import ca.uhn.fhir.rest.api.server.RequestDetails;
|
||||||
import ca.uhn.fhir.rest.param.DateRangeParam;
|
import ca.uhn.fhir.rest.param.DateRangeParam;
|
||||||
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
|
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
|
||||||
import org.hl7.fhir.dstu3.model.*;
|
import org.hl7.fhir.dstu3.model.*;
|
||||||
|
import org.hl7.fhir.instance.model.api.IBaseBundle;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* #%L
|
* #%L
|
||||||
|
@ -42,8 +43,8 @@ public class BaseJpaResourceProviderCompositionDstu3 extends JpaResourceProvider
|
||||||
* @param theRequestDetails
|
* @param theRequestDetails
|
||||||
*/
|
*/
|
||||||
//@formatter:off
|
//@formatter:off
|
||||||
@Operation(name = "document", idempotent = true, bundleType=BundleTypeEnum.SEARCHSET)
|
@Operation(name = "document", idempotent = true, bundleType=BundleTypeEnum.DOCUMENT)
|
||||||
public IBundleProvider getDocumentForComposition(
|
public IBaseBundle getDocumentForComposition(
|
||||||
|
|
||||||
javax.servlet.http.HttpServletRequest theServletRequest,
|
javax.servlet.http.HttpServletRequest theServletRequest,
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@ import ca.uhn.fhir.rest.api.SortSpec;
|
||||||
import ca.uhn.fhir.rest.api.server.IBundleProvider;
|
import ca.uhn.fhir.rest.api.server.IBundleProvider;
|
||||||
import ca.uhn.fhir.rest.api.server.RequestDetails;
|
import ca.uhn.fhir.rest.api.server.RequestDetails;
|
||||||
import ca.uhn.fhir.rest.param.DateRangeParam;
|
import ca.uhn.fhir.rest.param.DateRangeParam;
|
||||||
|
import org.hl7.fhir.instance.model.api.IBaseBundle;
|
||||||
import org.hl7.fhir.r4.model.Composition;
|
import org.hl7.fhir.r4.model.Composition;
|
||||||
import org.hl7.fhir.r4.model.IdType;
|
import org.hl7.fhir.r4.model.IdType;
|
||||||
import org.hl7.fhir.r4.model.UnsignedIntType;
|
import org.hl7.fhir.r4.model.UnsignedIntType;
|
||||||
|
@ -46,7 +47,7 @@ public class BaseJpaResourceProviderCompositionR4 extends JpaResourceProviderR4<
|
||||||
*/
|
*/
|
||||||
//@formatter:off
|
//@formatter:off
|
||||||
@Operation(name = "document", idempotent = true, bundleType=BundleTypeEnum.SEARCHSET)
|
@Operation(name = "document", idempotent = true, bundleType=BundleTypeEnum.SEARCHSET)
|
||||||
public IBundleProvider getDocumentForComposition(
|
public IBaseBundle getDocumentForComposition(
|
||||||
|
|
||||||
javax.servlet.http.HttpServletRequest theServletRequest,
|
javax.servlet.http.HttpServletRequest theServletRequest,
|
||||||
|
|
||||||
|
|
|
@ -26,13 +26,4 @@ public class FhirResourceDaoDocumentDstu3Test extends BaseJpaDstu3Test {
|
||||||
Bundle inputBundle = myFhirCtx.newXmlParser().parseResource(Bundle.class, input);
|
Bundle inputBundle = myFhirCtx.newXmlParser().parseResource(Bundle.class, input);
|
||||||
DaoMethodOutcome responseBundle = myBundleDao.create(inputBundle, mySrd);
|
DaoMethodOutcome responseBundle = myBundleDao.create(inputBundle, mySrd);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testGetDocument() throws Exception {
|
|
||||||
String input = IOUtils.toString(getClass().getResourceAsStream("/sample-document.xml"), StandardCharsets.UTF_8);
|
|
||||||
Bundle inputBundle = myFhirCtx.newXmlParser().parseResource(Bundle.class, input);
|
|
||||||
DaoMethodOutcome responseBundle = myBundleDao.create(inputBundle, mySrd);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,10 +13,7 @@ import org.hl7.fhir.dstu3.model.*;
|
||||||
import org.hl7.fhir.dstu3.model.Bundle.BundleEntryComponent;
|
import org.hl7.fhir.dstu3.model.Bundle.BundleEntryComponent;
|
||||||
import org.hl7.fhir.dstu3.model.Encounter.EncounterStatus;
|
import org.hl7.fhir.dstu3.model.Encounter.EncounterStatus;
|
||||||
import org.hl7.fhir.dstu3.model.Observation.ObservationStatus;
|
import org.hl7.fhir.dstu3.model.Observation.ObservationStatus;
|
||||||
import org.junit.After;
|
import org.junit.*;
|
||||||
import org.junit.AfterClass;
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -31,11 +28,10 @@ public class CompositionDocumentDstu3Test extends BaseResourceProviderDstu3Test
|
||||||
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(CompositionDocumentDstu3Test.class);
|
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(CompositionDocumentDstu3Test.class);
|
||||||
private String orgId;
|
private String orgId;
|
||||||
private String patId;
|
private String patId;
|
||||||
private String encId1;
|
|
||||||
private String encId2;
|
|
||||||
private ArrayList<String> myObsIds;
|
private ArrayList<String> myObsIds;
|
||||||
private String myWrongPatId;
|
private String encId;
|
||||||
private String myWrongEnc1;
|
private String listId;
|
||||||
|
private String compId;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void beforeDisableResultReuse() {
|
public void beforeDisableResultReuse() {
|
||||||
|
@ -56,7 +52,7 @@ public class CompositionDocumentDstu3Test extends BaseResourceProviderDstu3Test
|
||||||
myFhirCtx.setParserErrorHandler(new StrictErrorHandler());
|
myFhirCtx.setParserErrorHandler(new StrictErrorHandler());
|
||||||
|
|
||||||
myDaoConfig.setAllowMultipleDelete(true);
|
myDaoConfig.setAllowMultipleDelete(true);
|
||||||
|
|
||||||
Organization org = new Organization();
|
Organization org = new Organization();
|
||||||
org.setName("an org");
|
org.setName("an org");
|
||||||
orgId = ourClient.create().resource(org).execute().getId().toUnqualifiedVersionless().getValue();
|
orgId = ourClient.create().resource(org).execute().getId().toUnqualifiedVersionless().getValue();
|
||||||
|
@ -66,139 +62,82 @@ public class CompositionDocumentDstu3Test extends BaseResourceProviderDstu3Test
|
||||||
patient.getManagingOrganization().setReference(orgId);
|
patient.getManagingOrganization().setReference(orgId);
|
||||||
patId = ourClient.create().resource(patient).execute().getId().toUnqualifiedVersionless().getValue();
|
patId = ourClient.create().resource(patient).execute().getId().toUnqualifiedVersionless().getValue();
|
||||||
|
|
||||||
Patient patient2 = new Patient();
|
Encounter enc = new Encounter();
|
||||||
patient2.getManagingOrganization().setReference(orgId);
|
enc.setStatus(EncounterStatus.ARRIVED);
|
||||||
myWrongPatId = ourClient.create().resource(patient2).execute().getId().toUnqualifiedVersionless().getValue();
|
enc.getSubject().setReference(patId);
|
||||||
|
enc.getServiceProvider().setReference(orgId);
|
||||||
|
encId = ourClient.create().resource(enc).execute().getId().toUnqualifiedVersionless().getValue();
|
||||||
|
|
||||||
Encounter enc1 = new Encounter();
|
ListResource listResource = new ListResource();
|
||||||
enc1.setStatus(EncounterStatus.CANCELLED);
|
|
||||||
enc1.getSubject().setReference(patId);
|
|
||||||
enc1.getServiceProvider().setReference(orgId);
|
|
||||||
encId1 = ourClient.create().resource(enc1).execute().getId().toUnqualifiedVersionless().getValue();
|
|
||||||
|
|
||||||
Encounter enc2 = new Encounter();
|
|
||||||
enc2.setStatus(EncounterStatus.ARRIVED);
|
|
||||||
enc2.getSubject().setReference(patId);
|
|
||||||
enc2.getServiceProvider().setReference(orgId);
|
|
||||||
encId2 = ourClient.create().resource(enc2).execute().getId().toUnqualifiedVersionless().getValue();
|
|
||||||
|
|
||||||
Encounter wrongEnc1 = new Encounter();
|
|
||||||
wrongEnc1.setStatus(EncounterStatus.ARRIVED);
|
|
||||||
wrongEnc1.getSubject().setReference(myWrongPatId);
|
|
||||||
wrongEnc1.getServiceProvider().setReference(orgId);
|
|
||||||
myWrongEnc1 = ourClient.create().resource(wrongEnc1).execute().getId().toUnqualifiedVersionless().getValue();
|
|
||||||
|
|
||||||
|
ArrayList<Observation> myObs = new ArrayList<>();
|
||||||
myObsIds = new ArrayList<String>();
|
myObsIds = new ArrayList<String>();
|
||||||
for (int i = 0; i < 20; i++) {
|
for (int i = 0; i < 5; i++) {
|
||||||
Observation obs = new Observation();
|
Observation obs = new Observation();
|
||||||
obs.getSubject().setReference(patId);
|
obs.getSubject().setReference(patId);
|
||||||
obs.setStatus(ObservationStatus.FINAL);
|
obs.setStatus(ObservationStatus.FINAL);
|
||||||
String obsId = ourClient.create().resource(obs).execute().getId().toUnqualifiedVersionless().getValue();
|
String obsId = ourClient.create().resource(obs).execute().getId().toUnqualifiedVersionless().getValue();
|
||||||
|
listResource.addEntry(new ListResource.ListEntryComponent().setItem(new Reference(obs)));
|
||||||
|
myObs.add(obs);
|
||||||
myObsIds.add(obsId);
|
myObsIds.add(obsId);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
listId = ourClient.create().resource(listResource).execute().getId().toUnqualifiedVersionless().getValue();
|
||||||
|
|
||||||
/**
|
Composition composition = new Composition();
|
||||||
* See #674
|
composition.setSubject(new Reference(patient));
|
||||||
*/
|
composition.addSection().addEntry(new Reference(patient));
|
||||||
@Test
|
composition.addSection().addEntry(new Reference(org));
|
||||||
public void testEverythingReturnsCorrectResources() throws Exception {
|
composition.addSection().addEntry(new Reference(enc));
|
||||||
|
composition.addSection().addEntry(new Reference(listResource));
|
||||||
Bundle bundle = fetchBundle(ourServerBase + "/" + patId + "/$everything?_format=json&_count=100", EncodingEnum.JSON);
|
composition.addSection().addEntry(new Reference(listResource));
|
||||||
|
|
||||||
assertNull(bundle.getLink("next"));
|
for (Observation obs : myObs) {
|
||||||
|
composition.addSection().addEntry(new Reference(obs));
|
||||||
Set<String> actual = new TreeSet<String>();
|
|
||||||
for (BundleEntryComponent nextEntry : bundle.getEntry()) {
|
|
||||||
actual.add(nextEntry.getResource().getIdElement().toUnqualifiedVersionless().getValue());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ourLog.info("Found IDs: {}", actual);
|
compId = ourClient.create().resource(composition).execute().getId().toUnqualifiedVersionless().getValue();
|
||||||
|
|
||||||
assertThat(actual, hasItem(patId));
|
|
||||||
assertThat(actual, hasItem(encId1));
|
|
||||||
assertThat(actual, hasItem(encId2));
|
|
||||||
assertThat(actual, hasItem(orgId));
|
|
||||||
assertThat(actual, hasItems(myObsIds.toArray(new String[0])));
|
|
||||||
assertThat(actual, not(hasItem(myWrongPatId)));
|
|
||||||
assertThat(actual, not(hasItem(myWrongEnc1)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* See #674
|
|
||||||
*/
|
|
||||||
@Test
|
@Test
|
||||||
public void testEverythingReturnsCorrectResourcesSmallPage() throws Exception {
|
public void testDocumentBundleReturnedCorrect() throws Exception {
|
||||||
myDaoConfig.setEverythingIncludesFetchPageSize(1);
|
myDaoConfig.setEverythingIncludesFetchPageSize(1);
|
||||||
|
|
||||||
Bundle bundle = fetchBundle(ourServerBase + "/" + patId + "/$everything?_format=json&_count=100", EncodingEnum.JSON);
|
String theUrl = ourServerBase + "/" + compId + "/$document?_format=json&_count=100";
|
||||||
|
System.out.println(theUrl);
|
||||||
|
Bundle bundle = fetchBundle(theUrl, EncodingEnum.JSON);
|
||||||
|
|
||||||
assertNull(bundle.getLink("next"));
|
assertNull(bundle.getLink("next"));
|
||||||
|
|
||||||
Set<String> actual = new TreeSet<String>();
|
Set<String> actual = new TreeSet<String>();
|
||||||
for (BundleEntryComponent nextEntry : bundle.getEntry()) {
|
for (BundleEntryComponent nextEntry : bundle.getEntry()) {
|
||||||
actual.add(nextEntry.getResource().getIdElement().toUnqualifiedVersionless().getValue());
|
actual.add(nextEntry.getResource().getIdElement().toUnqualifiedVersionless().getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
ourLog.info("Found IDs: {}", actual);
|
ourLog.info("Found IDs: {}", actual);
|
||||||
|
|
||||||
assertThat(actual, hasItem(patId));
|
assertThat(actual, hasItem(patId));
|
||||||
assertThat(actual, hasItem(encId1));
|
assertThat(actual, hasItem(encId));
|
||||||
assertThat(actual, hasItem(encId2));
|
assertThat(actual, hasItem(encId));
|
||||||
assertThat(actual, hasItem(orgId));
|
assertThat(actual, hasItem(orgId));
|
||||||
assertThat(actual, hasItems(myObsIds.toArray(new String[0])));
|
assertThat(actual, hasItems(myObsIds.toArray(new String[0])));
|
||||||
assertThat(actual, not(hasItem(myWrongPatId)));
|
|
||||||
assertThat(actual, not(hasItem(myWrongEnc1)));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* See #674
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testEverythingPagesWithCorrectEncodingJson() throws Exception {
|
|
||||||
|
|
||||||
Bundle bundle = fetchBundle(ourServerBase + "/" + patId + "/$everything?_format=json&_count=1", EncodingEnum.JSON);
|
|
||||||
|
|
||||||
assertNotNull(bundle.getLink("next").getUrl());
|
|
||||||
assertThat(bundle.getLink("next").getUrl(), containsString("_format=json"));
|
|
||||||
bundle = fetchBundle(bundle.getLink("next").getUrl(), EncodingEnum.JSON);
|
|
||||||
|
|
||||||
assertNotNull(bundle.getLink("next").getUrl());
|
|
||||||
assertThat(bundle.getLink("next").getUrl(), containsString("_format=json"));
|
|
||||||
bundle = fetchBundle(bundle.getLink("next").getUrl(), EncodingEnum.JSON);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* See #674
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testEverythingPagesWithCorrectEncodingXml() throws Exception {
|
|
||||||
|
|
||||||
Bundle bundle = fetchBundle(ourServerBase + "/" + patId + "/$everything?_format=xml&_count=1", EncodingEnum.XML);
|
|
||||||
|
|
||||||
assertNotNull(bundle.getLink("next").getUrl());
|
|
||||||
ourLog.info("Next link: {}", bundle.getLink("next").getUrl());
|
|
||||||
assertThat(bundle.getLink("next").getUrl(), containsString("_format=xml"));
|
|
||||||
bundle = fetchBundle(bundle.getLink("next").getUrl(), EncodingEnum.XML);
|
|
||||||
|
|
||||||
assertNotNull(bundle.getLink("next").getUrl());
|
|
||||||
ourLog.info("Next link: {}", bundle.getLink("next").getUrl());
|
|
||||||
assertThat(bundle.getLink("next").getUrl(), containsString("_format=xml"));
|
|
||||||
bundle = fetchBundle(bundle.getLink("next").getUrl(), EncodingEnum.XML);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Bundle fetchBundle(String theUrl, EncodingEnum theEncoding) throws IOException, ClientProtocolException {
|
private Bundle fetchBundle(String theUrl, EncodingEnum theEncoding) throws IOException, ClientProtocolException {
|
||||||
Bundle bundle;
|
Bundle bundle;
|
||||||
HttpGet get = new HttpGet(theUrl);
|
HttpGet get = new HttpGet(theUrl);
|
||||||
CloseableHttpResponse resp = ourHttpClient.execute(get);
|
CloseableHttpResponse resp = ourHttpClient.execute(get);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
String test = IOUtils.toString(resp.getEntity().getContent(), Charsets.UTF_8);
|
||||||
|
System.out.println(test);
|
||||||
|
|
||||||
assertEquals(theEncoding.getResourceContentTypeNonLegacy(), resp.getFirstHeader(ca.uhn.fhir.rest.api.Constants.HEADER_CONTENT_TYPE).getValue().replaceAll(";.*", ""));
|
assertEquals(theEncoding.getResourceContentTypeNonLegacy(), resp.getFirstHeader(ca.uhn.fhir.rest.api.Constants.HEADER_CONTENT_TYPE).getValue().replaceAll(";.*", ""));
|
||||||
bundle = theEncoding.newParser(myFhirCtx).parseResource(Bundle.class, IOUtils.toString(resp.getEntity().getContent(), Charsets.UTF_8));
|
bundle = theEncoding.newParser(myFhirCtx).parseResource(Bundle.class, test);
|
||||||
} finally {
|
} finally {
|
||||||
IOUtils.closeQuietly(resp);
|
IOUtils.closeQuietly(resp);
|
||||||
}
|
}
|
||||||
|
|
||||||
return bundle;
|
return bundle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue