Merge branch 'master' of github.com:jamesagnew/hapi-fhir
This commit is contained in:
commit
0fb74e5d42
|
@ -20,33 +20,34 @@ package ca.uhn.fhir.util;
|
|||
* #L%
|
||||
*/
|
||||
|
||||
import ca.uhn.fhir.context.FhirContext;
|
||||
import ca.uhn.fhir.i18n.HapiLocalizer;
|
||||
import ch.qos.logback.classic.Level;
|
||||
import ch.qos.logback.classic.Logger;
|
||||
import ch.qos.logback.classic.LoggerContext;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.Arrays;
|
||||
import java.util.Locale;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import ca.uhn.fhir.context.FhirContext;
|
||||
import ca.uhn.fhir.i18n.HapiLocalizer;
|
||||
import ch.qos.logback.classic.Level;
|
||||
import ch.qos.logback.classic.Logger;
|
||||
import ch.qos.logback.classic.LoggerContext;
|
||||
import static org.apache.commons.lang3.StringUtils.defaultString;
|
||||
|
||||
public class TestUtil {
|
||||
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(TestUtil.class);
|
||||
|
||||
/**
|
||||
* <b>THIS IS FOR UNIT TESTS ONLY - DO NOT CALL THIS METHOD FROM USER CODE</b>
|
||||
*
|
||||
* <p>
|
||||
* When we run the unit tests in cobertura, JUnit doesn't seem to clean up static fields which leads to
|
||||
* tons of memory being used by the end and the JVM crashes in Travis. Manually clearing all of the
|
||||
* static fields seems to solve this.
|
||||
*/
|
||||
public static void clearAllStaticFieldsForUnitTest() {
|
||||
HapiLocalizer.setOurFailOnMissingMessage(true);
|
||||
|
||||
|
||||
Class<?> theType;
|
||||
try {
|
||||
throw new Exception();
|
||||
|
@ -104,7 +105,7 @@ public class TestUtil {
|
|||
* environment
|
||||
*/
|
||||
public static void randomizeLocale() {
|
||||
Locale[] availableLocales = { Locale.CANADA, Locale.GERMANY, Locale.TAIWAN };
|
||||
Locale[] availableLocales = {Locale.CANADA, Locale.GERMANY, Locale.TAIWAN};
|
||||
Locale.setDefault(availableLocales[(int) (Math.random() * availableLocales.length)]);
|
||||
ourLog.info("Tests are running in locale: " + Locale.getDefault().getDisplayName());
|
||||
if (Math.random() < 0.5) {
|
||||
|
@ -116,10 +117,19 @@ public class TestUtil {
|
|||
System.setProperty("file.encoding", "UTF-8");
|
||||
System.setProperty("line.separator", "\n");
|
||||
}
|
||||
String availableTimeZones[] = { "GMT+08:00", "GMT-05:00", "GMT+00:00", "GMT+03:30" };
|
||||
String availableTimeZones[] = {"GMT+08:00", "GMT-05:00", "GMT+00:00", "GMT+03:30"};
|
||||
String timeZone = availableTimeZones[(int) (Math.random() * availableTimeZones.length)];
|
||||
TimeZone.setDefault(TimeZone.getTimeZone(timeZone));
|
||||
ourLog.info("Tests are using time zone: {}", TimeZone.getDefault().getID());
|
||||
}
|
||||
|
||||
/**
|
||||
* <b>THIS IS FOR UNIT TESTS ONLY - DO NOT CALL THIS METHOD FROM USER CODE</b>
|
||||
* <p>
|
||||
* Strip \r chars from a string to account for line ending platform differences
|
||||
*/
|
||||
public static String stripReturns(String theString) {
|
||||
return defaultString(theString).replace("\r", "");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -159,6 +159,7 @@ public abstract class BackboneElement extends Element implements IBaseBackboneEl
|
|||
public abstract BackboneElement copy();
|
||||
|
||||
public void copyValues(BackboneElement dst) {
|
||||
super.copyValues(dst);
|
||||
if (modifierExtension != null) {
|
||||
dst.modifierExtension = new ArrayList<Extension>();
|
||||
for (Extension i : modifierExtension)
|
||||
|
|
|
@ -340,6 +340,7 @@ public abstract class DomainResource extends Resource implements IBaseHasExtensi
|
|||
public abstract DomainResource copy();
|
||||
|
||||
public void copyValues(DomainResource dst) {
|
||||
super.copyValues(dst);
|
||||
dst.text = text == null ? null : text.copy();
|
||||
if (contained != null) {
|
||||
dst.contained = new ArrayList<Resource>();
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
package ca.uhn.fhir.model;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.hl7.fhir.dstu2016may.model.BackboneElement;
|
||||
import org.hl7.fhir.dstu2016may.model.Patient.PatientCommunicationComponent;
|
||||
import org.junit.Test;
|
||||
|
||||
public class BackboneElementDstu2_1Test {
|
||||
/**
|
||||
* Ensuring that IDs of subtypes of BackboneElement get copied when
|
||||
* the {@link org.hl7.fhir.dstu2016may.model.BackboneElement#copy()} method is called
|
||||
*/
|
||||
@Test
|
||||
public void testPatientCommunicationComponentIdCopy() {
|
||||
PatientCommunicationComponent pcc1 = new PatientCommunicationComponent();
|
||||
pcc1.setId("1001");
|
||||
|
||||
PatientCommunicationComponent copiedPcc = pcc1.copy();
|
||||
String copiedPccID = copiedPcc.getIdElement().getIdPart();
|
||||
|
||||
assertTrue(copiedPcc instanceof BackboneElement); // Just making sure this assumption still holds up, otherwise this test isn't very useful
|
||||
assertEquals("1001", copiedPccID);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package ca.uhn.fhir.model;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.hl7.fhir.dstu2016may.model.DomainResource;
|
||||
import org.hl7.fhir.dstu2016may.model.Narrative;
|
||||
import org.hl7.fhir.dstu2016may.model.Patient;
|
||||
import org.junit.Test;
|
||||
|
||||
public class DomainResourceDstu2_1Test {
|
||||
/**
|
||||
* Ensuring that Ensuring that fields defined in {@link org.hl7.fhir.dstu2016may.model.DomainResource} and {@link org.hl7.fhir.dstu2016may.model.Resource}
|
||||
* get copied when the {@link org.hl7.fhir.dstu2016may.model.DomainResource#copy()} method is called
|
||||
*/
|
||||
@Test
|
||||
public void testPatientCopy() {
|
||||
Patient p1 = new Patient();
|
||||
p1.setId("1001");
|
||||
p1.setText(new Narrative().setStatus(Narrative.NarrativeStatus.ADDITIONAL));
|
||||
|
||||
Patient copiedPatient = p1.copy();
|
||||
String copiedPatientID = copiedPatient.getIdElement().getIdPart();
|
||||
Narrative.NarrativeStatus copiedPatientTextStatus = copiedPatient.getText().getStatus();
|
||||
|
||||
assertTrue(copiedPatient instanceof DomainResource); // Just making sure this assumption still holds up, otherwise this test isn't very useful
|
||||
assertEquals("1001", copiedPatientID);
|
||||
assertEquals(new Narrative().setStatus(Narrative.NarrativeStatus.ADDITIONAL).getStatus(), copiedPatientTextStatus);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package org.hl7.fhir.dstu3.model;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.hl7.fhir.dstu3.model.Patient.PatientCommunicationComponent;
|
||||
import org.junit.Test;
|
||||
|
||||
public class BackboneElementDstu3Test {
|
||||
/**
|
||||
* Ensuring that IDs of subtypes of BackboneElement get copied when
|
||||
* the {@link BackboneElement#copy()} method is called
|
||||
*/
|
||||
@Test
|
||||
public void testPatientCommunicationComponentCopy() {
|
||||
PatientCommunicationComponent pcc1 = new PatientCommunicationComponent();
|
||||
pcc1.setId("1001");
|
||||
|
||||
PatientCommunicationComponent copiedPcc = pcc1.copy();
|
||||
String copiedPccID = copiedPcc.getId();
|
||||
|
||||
assertTrue(copiedPcc instanceof BackboneElement); // Just making sure this assumption still holds up, otherwise this test isn't very useful
|
||||
assertEquals("1001", copiedPccID);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package org.hl7.fhir.dstu3.model;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
public class DomainResourceDstu3Test {
|
||||
/**
|
||||
* Ensuring that fields defined in {@link DomainResource} and {@link Resource}
|
||||
* get copied when the {@link DomainResource#copy()} method is called
|
||||
*/
|
||||
@Test
|
||||
public void testPatientCopy() {
|
||||
Patient p1 = new Patient();
|
||||
p1.setId("1001");
|
||||
p1.setText(new Narrative().setStatus(Narrative.NarrativeStatus.ADDITIONAL));
|
||||
|
||||
Patient copiedPatient = p1.copy();
|
||||
String copiedPatientID = copiedPatient.getIdElement().getIdPart();
|
||||
Narrative.NarrativeStatus copiedPatientTextStatus = copiedPatient.getText().getStatus();
|
||||
|
||||
assertTrue(copiedPatient instanceof DomainResource); // Just making sure this assumption still holds up, otherwise this test isn't very useful
|
||||
assertEquals("1001", copiedPatientID);
|
||||
assertEquals(new Narrative().setStatus(Narrative.NarrativeStatus.ADDITIONAL).getStatus(), copiedPatientTextStatus);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package org.hl7.fhir.dstu3.model;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import org.junit.Test;
|
||||
|
||||
public class MetadataResourceDstu3Test {
|
||||
/**
|
||||
* Ensuring that fields defined in {@link MetadataResource}, {@link DomainResource}, and {@link Resource}
|
||||
* get copied when the {@link MetadataResource#copy()} method is called
|
||||
*/
|
||||
@Test
|
||||
public void testCodeSystemCopy() {
|
||||
CodeSystem codeSystem1 = new CodeSystem();
|
||||
codeSystem1.setId("1001");
|
||||
codeSystem1.setName("Name123");
|
||||
codeSystem1.setText(new Narrative().setStatus(Narrative.NarrativeStatus.ADDITIONAL));
|
||||
|
||||
CodeSystem copiedCodeSystem = codeSystem1.copy();
|
||||
String copiedCodeSystemID = copiedCodeSystem.getId();
|
||||
String copiedCodeSystemName = copiedCodeSystem.getName();
|
||||
Narrative.NarrativeStatus copiedCodeSystemTextStatus = copiedCodeSystem.getText().getStatus();
|
||||
|
||||
assertTrue(copiedCodeSystem instanceof MetadataResource); // Just making sure this assumption still holds up, otherwise this test isn't very useful
|
||||
assertEquals("1001", copiedCodeSystemID);
|
||||
assertEquals("Name123", copiedCodeSystemName);
|
||||
assertEquals(new Narrative().setStatus(Narrative.NarrativeStatus.ADDITIONAL).getStatus(), copiedCodeSystemTextStatus);
|
||||
}
|
||||
}
|
|
@ -128,6 +128,7 @@ public abstract class BackboneElement extends Element implements IBaseBackboneEl
|
|||
public abstract BackboneElement copy();
|
||||
|
||||
public void copyValues(BackboneElement dst) {
|
||||
super.copyValues(dst);
|
||||
if (modifierExtension != null) {
|
||||
dst.modifierExtension = new ArrayList<Extension>();
|
||||
for (Extension i : modifierExtension)
|
||||
|
|
|
@ -265,6 +265,7 @@ public abstract class DomainResource extends Resource implements IBaseHasExtensi
|
|||
public abstract DomainResource copy();
|
||||
|
||||
public void copyValues(DomainResource dst) {
|
||||
super.copyValues(dst);
|
||||
dst.text = text == null ? null : text.copy();
|
||||
if (contained != null) {
|
||||
dst.contained = new ArrayList<Resource>();
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
package ca.uhn.fhir.model;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.hl7.fhir.instance.model.BackboneElement;
|
||||
import org.hl7.fhir.instance.model.Patient.PatientCommunicationComponent;
|
||||
import org.junit.Test;
|
||||
|
||||
public class BackboneElementHL7_Dstu2Test {
|
||||
/**
|
||||
* Ensuring that IDs of subtypes of BackboneElement get copied when
|
||||
* the {@link org.hl7.fhir.instance.model.BackboneElement#copy()} method is called
|
||||
*/
|
||||
@Test
|
||||
public void testPatientCommunicationComponentIdCopy() {
|
||||
PatientCommunicationComponent pcc1 = new PatientCommunicationComponent();
|
||||
pcc1.setId("1001");
|
||||
|
||||
PatientCommunicationComponent copiedPcc = pcc1.copy();
|
||||
String copiedPccID = copiedPcc.getIdElement().getIdPart();
|
||||
|
||||
assertTrue(copiedPcc instanceof BackboneElement); // Just making sure this assumption still holds up, otherwise this test isn't very useful
|
||||
assertEquals("1001", copiedPccID);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package ca.uhn.fhir.model;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.hl7.fhir.instance.model.DomainResource;
|
||||
import org.hl7.fhir.instance.model.Narrative;
|
||||
import org.hl7.fhir.instance.model.Patient;
|
||||
import org.junit.Test;
|
||||
|
||||
public class DomainResourceHL7_Dstu2Test {
|
||||
/**
|
||||
* Ensuring that fields defined in {@link org.hl7.fhir.instance.model.DomainResource} and {@link org.hl7.fhir.instance.model.Resource}
|
||||
* the {@link org.hl7.fhir.instance.model.DomainResource#copy()} method is called
|
||||
*/
|
||||
@Test
|
||||
public void testPatientCopy() {
|
||||
Patient p1 = new Patient();
|
||||
p1.setId("1001");
|
||||
p1.setText(new Narrative().setStatus(Narrative.NarrativeStatus.ADDITIONAL));
|
||||
|
||||
Patient copiedPatient = p1.copy();
|
||||
String copiedPatientID = copiedPatient.getIdElement().getIdPart();
|
||||
Narrative.NarrativeStatus copiedPatientTextStatus = copiedPatient.getText().getStatus();
|
||||
|
||||
assertTrue(copiedPatient instanceof DomainResource); // Just making sure this assumption still holds up, otherwise this test isn't very useful
|
||||
assertEquals("1001", copiedPatientID);
|
||||
assertEquals(new Narrative().setStatus(Narrative.NarrativeStatus.ADDITIONAL).getStatus(), copiedPatientTextStatus);
|
||||
}
|
||||
}
|
|
@ -22,7 +22,6 @@ import org.hl7.fhir.exceptions.FHIRException;
|
|||
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||
import org.hl7.fhir.r4.hapi.rest.server.GraphQLProvider;
|
||||
import org.hl7.fhir.r4.model.*;
|
||||
import org.hl7.fhir.r4.utils.GraphQLEngine;
|
||||
import org.hl7.fhir.utilities.graphql.Argument;
|
||||
import org.hl7.fhir.utilities.graphql.IGraphQLStorageServices;
|
||||
import org.hl7.fhir.utilities.graphql.ReferenceResolution;
|
||||
|
@ -37,8 +36,7 @@ import java.util.List;
|
|||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static org.hamcrest.Matchers.startsWith;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class GraphQLR4ProviderTest {
|
||||
|
||||
|
@ -48,6 +46,121 @@ public class GraphQLR4ProviderTest {
|
|||
private static int ourPort;
|
||||
private static Server ourServer;
|
||||
|
||||
@Before
|
||||
public void before() {
|
||||
//nothing
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGraphInstance() throws Exception {
|
||||
String query = "{name{family,given}}";
|
||||
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient/123/$graphql?query=" + UrlUtil.escape(query));
|
||||
CloseableHttpResponse status = ourClient.execute(httpGet);
|
||||
try {
|
||||
String responseContent = IOUtils.toString(status.getEntity().getContent(), StandardCharsets.UTF_8);
|
||||
ourLog.info(responseContent);
|
||||
assertEquals(200, status.getStatusLine().getStatusCode());
|
||||
|
||||
assertEquals(TestUtil.stripReturns("{" +
|
||||
" \"name\":[{" +
|
||||
" \"family\":\"FAMILY\"," +
|
||||
" \"given\":[\"GIVEN1\",\"GIVEN2\"]" +
|
||||
" },{" +
|
||||
" \"given\":[\"GivenOnly1\",\"GivenOnly2\"]" +
|
||||
" }]" +
|
||||
"}"), TestUtil.stripReturns(responseContent));
|
||||
assertThat(status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue(), startsWith("application/json"));
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(status.getEntity().getContent());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGraphInstanceWithFhirpath() throws Exception {
|
||||
String query = "{name(fhirpath:\"family.exists()\"){text,given,family}}";
|
||||
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient/123/$graphql?query=" + UrlUtil.escape(query));
|
||||
CloseableHttpResponse status = ourClient.execute(httpGet);
|
||||
try {
|
||||
String responseContent = IOUtils.toString(status.getEntity().getContent(), StandardCharsets.UTF_8);
|
||||
ourLog.info(responseContent);
|
||||
assertEquals(200, status.getStatusLine().getStatusCode());
|
||||
|
||||
assertEquals(TestUtil.stripReturns("{\n" +
|
||||
" \"name\":[{\n" +
|
||||
" \"given\":[\"GIVEN1\",\"GIVEN2\"],\n" +
|
||||
" \"family\":\"FAMILY\"\n" +
|
||||
" }]\n" +
|
||||
"}"), TestUtil.stripReturns(responseContent));
|
||||
assertThat(status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue(), startsWith("application/json"));
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(status.getEntity().getContent());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGraphSystemInstance() throws Exception {
|
||||
String query = "{Patient(id:123){id,name{given,family}}}";
|
||||
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/$graphql?query=" + UrlUtil.escape(query));
|
||||
CloseableHttpResponse status = ourClient.execute(httpGet);
|
||||
try {
|
||||
String responseContent = IOUtils.toString(status.getEntity().getContent(), StandardCharsets.UTF_8);
|
||||
ourLog.info(responseContent);
|
||||
assertEquals(200, status.getStatusLine().getStatusCode());
|
||||
|
||||
assertEquals(TestUtil.stripReturns("{\n" +
|
||||
" \"Patient\":{\n" +
|
||||
" \"name\":[{\n" +
|
||||
" \"given\":[\"GIVEN1\",\"GIVEN2\"],\n" +
|
||||
" \"family\":\"FAMILY\"\n" +
|
||||
" },{\n" +
|
||||
" \"given\":[\"GivenOnly1\",\"GivenOnly2\"]\n" +
|
||||
" }]\n" +
|
||||
" }\n" +
|
||||
"}"), TestUtil.stripReturns(responseContent));
|
||||
assertThat(status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue(), startsWith("application/json"));
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(status.getEntity().getContent());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGraphSystemList() throws Exception {
|
||||
String query = "{PatientList(name:\"pet\"){name{family,given}}}";
|
||||
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/$graphql?query=" + UrlUtil.escape(query));
|
||||
CloseableHttpResponse status = ourClient.execute(httpGet);
|
||||
try {
|
||||
String responseContent = IOUtils.toString(status.getEntity().getContent(), StandardCharsets.UTF_8);
|
||||
ourLog.info(responseContent);
|
||||
assertEquals(200, status.getStatusLine().getStatusCode());
|
||||
|
||||
assertEquals(TestUtil.stripReturns("{\n" +
|
||||
" \"PatientList\":[{\n" +
|
||||
" \"name\":[{\n" +
|
||||
" \"family\":\"pet\",\n" +
|
||||
" \"given\":[\"GIVEN1\",\"GIVEN2\"]\n" +
|
||||
" },{\n" +
|
||||
" \"given\":[\"GivenOnly1\",\"GivenOnly2\"]\n" +
|
||||
" }]\n" +
|
||||
" },{\n" +
|
||||
" \"name\":[{\n" +
|
||||
" \"given\":[\"GivenOnlyB1\",\"GivenOnlyB2\"]\n" +
|
||||
" }]\n" +
|
||||
" }]\n" +
|
||||
"}"), TestUtil.stripReturns(responseContent));
|
||||
assertThat(status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue(), startsWith("application/json"));
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(status.getEntity().getContent());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void afterClassClearContext() throws Exception {
|
||||
ourServer.stop();
|
||||
|
@ -79,121 +192,6 @@ public class GraphQLR4ProviderTest {
|
|||
|
||||
}
|
||||
|
||||
@Before
|
||||
public void before() {
|
||||
//nothing
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGraphInstance() throws Exception {
|
||||
String query = "{name{family,given}}";
|
||||
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient/123/$graphql?query=" + UrlUtil.escape(query));
|
||||
CloseableHttpResponse status = ourClient.execute(httpGet);
|
||||
try {
|
||||
String responseContent = IOUtils.toString(status.getEntity().getContent(), StandardCharsets.UTF_8);
|
||||
ourLog.info(responseContent);
|
||||
assertEquals(200, status.getStatusLine().getStatusCode());
|
||||
|
||||
assertEquals("{" +
|
||||
" \"name\":[{" +
|
||||
" \"family\":\"FAMILY\"," +
|
||||
" \"given\":[\"GIVEN1\",\"GIVEN2\"]" +
|
||||
" },{" +
|
||||
" \"given\":[\"GivenOnly1\",\"GivenOnly2\"]" +
|
||||
" }]" +
|
||||
"}", responseContent.replace("\n", "").replace("\r", ""));
|
||||
assertThat(status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue(), startsWith("application/json"));
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(status.getEntity().getContent());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGraphSystemInstance() throws Exception {
|
||||
String query = "{Patient(id:123){id,name{given,family}}}";
|
||||
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/$graphql?query=" + UrlUtil.escape(query));
|
||||
CloseableHttpResponse status = ourClient.execute(httpGet);
|
||||
try {
|
||||
String responseContent = IOUtils.toString(status.getEntity().getContent(), StandardCharsets.UTF_8);
|
||||
ourLog.info(responseContent);
|
||||
assertEquals(200, status.getStatusLine().getStatusCode());
|
||||
|
||||
assertEquals("{\n" +
|
||||
" \"Patient\":{\n" +
|
||||
" \"name\":[{\n" +
|
||||
" \"given\":[\"GIVEN1\",\"GIVEN2\"],\n" +
|
||||
" \"family\":\"FAMILY\"\n" +
|
||||
" },{\n" +
|
||||
" \"given\":[\"GivenOnly1\",\"GivenOnly2\"]\n" +
|
||||
" }]\n" +
|
||||
" }\n" +
|
||||
"}", responseContent);
|
||||
assertThat(status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue(), startsWith("application/json"));
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(status.getEntity().getContent());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGraphSystemList() throws Exception {
|
||||
String query = "{PatientList(name:\"pet\"){name{family,given}}}";
|
||||
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/$graphql?query=" + UrlUtil.escape(query));
|
||||
CloseableHttpResponse status = ourClient.execute(httpGet);
|
||||
try {
|
||||
String responseContent = IOUtils.toString(status.getEntity().getContent(), StandardCharsets.UTF_8);
|
||||
ourLog.info(responseContent);
|
||||
assertEquals(200, status.getStatusLine().getStatusCode());
|
||||
|
||||
assertEquals("{\n" +
|
||||
" \"PatientList\":[{\n" +
|
||||
" \"name\":[{\n" +
|
||||
" \"family\":\"pet\",\n" +
|
||||
" \"given\":[\"GIVEN1\",\"GIVEN2\"]\n" +
|
||||
" },{\n" +
|
||||
" \"given\":[\"GivenOnly1\",\"GivenOnly2\"]\n" +
|
||||
" }]\n" +
|
||||
" },{\n" +
|
||||
" \"name\":[{\n" +
|
||||
" \"given\":[\"GivenOnlyB1\",\"GivenOnlyB2\"]\n" +
|
||||
" }]\n" +
|
||||
" }]\n" +
|
||||
"}", responseContent);
|
||||
assertThat(status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue(), startsWith("application/json"));
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(status.getEntity().getContent());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGraphInstanceWithFhirpath() throws Exception {
|
||||
String query = "{name(fhirpath:\"family.exists()\"){text,given,family}}";
|
||||
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient/123/$graphql?query=" + UrlUtil.escape(query));
|
||||
CloseableHttpResponse status = ourClient.execute(httpGet);
|
||||
try {
|
||||
String responseContent = IOUtils.toString(status.getEntity().getContent(), StandardCharsets.UTF_8);
|
||||
ourLog.info(responseContent);
|
||||
assertEquals(200, status.getStatusLine().getStatusCode());
|
||||
|
||||
assertEquals("{\n" +
|
||||
" \"name\":[{\n" +
|
||||
" \"given\":[\"GIVEN1\",\"GIVEN2\"],\n" +
|
||||
" \"family\":\"FAMILY\"\n" +
|
||||
" }]\n" +
|
||||
"}", responseContent);
|
||||
assertThat(status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue(), startsWith("application/json"));
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(status.getEntity().getContent());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class DummyPatientResourceProvider implements IResourceProvider {
|
||||
|
||||
@Override
|
||||
|
@ -219,31 +217,6 @@ public class GraphQLR4ProviderTest {
|
|||
}
|
||||
|
||||
private static class MyStorageServices implements IGraphQLStorageServices<Resource, Reference, Bundle> {
|
||||
@Override
|
||||
public ReferenceResolution<Resource> lookup(Object theAppInfo, Resource theContext, Reference theReference) throws FHIRException {
|
||||
ourLog.info("lookup from {} to {}", theContext.getIdElement().getValue(), theReference.getReference());
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resource lookup(Object theAppInfo, String theType, String theId) throws FHIRException {
|
||||
ourLog.info("lookup {}/{}", theType, theId);
|
||||
|
||||
if (theType.equals("Patient") && theId.equals("123")) {
|
||||
Patient p = new Patient();
|
||||
p.addName()
|
||||
.setFamily("FAMILY")
|
||||
.addGiven("GIVEN1")
|
||||
.addGiven("GIVEN2");
|
||||
p.addName()
|
||||
.addGiven("GivenOnly1")
|
||||
.addGiven("GivenOnly2");
|
||||
return p;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void listResources(Object theAppInfo, String theType, List<Argument> theSearchParams, List<Resource> theMatches) throws FHIRException {
|
||||
ourLog.info("listResources of {} - {}", theType, theSearchParams);
|
||||
|
@ -271,6 +244,31 @@ public class GraphQLR4ProviderTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resource lookup(Object theAppInfo, String theType, String theId) throws FHIRException {
|
||||
ourLog.info("lookup {}/{}", theType, theId);
|
||||
|
||||
if (theType.equals("Patient") && theId.equals("123")) {
|
||||
Patient p = new Patient();
|
||||
p.addName()
|
||||
.setFamily("FAMILY")
|
||||
.addGiven("GIVEN1")
|
||||
.addGiven("GIVEN2");
|
||||
p.addName()
|
||||
.addGiven("GivenOnly1")
|
||||
.addGiven("GivenOnly2");
|
||||
return p;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReferenceResolution<Resource> lookup(Object theAppInfo, Resource theContext, Reference theReference) throws FHIRException {
|
||||
ourLog.info("lookup from {} to {}", theContext.getIdElement().getValue(), theReference.getReference());
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Bundle search(Object theAppInfo, String theType, List<Argument> theSearchParams) throws FHIRException {
|
||||
ourLog.info("search on {} - {}", theType, theSearchParams);
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
package org.hl7.fhir.r4.model;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.hl7.fhir.r4.model.Patient.PatientCommunicationComponent;
|
||||
import org.junit.Test;
|
||||
|
||||
public class BackboneElementR4Test {
|
||||
/**
|
||||
* Ensuring that IDs of subtypes of BackboneElement get copied when
|
||||
* the {@link BackboneElement#copy()} method is called
|
||||
*/
|
||||
@Test
|
||||
public void testPatientCommunicationComponentCopy() {
|
||||
PatientCommunicationComponent pcc1 = new PatientCommunicationComponent();
|
||||
pcc1.setId("1001");
|
||||
|
||||
PatientCommunicationComponent copiedPcc = pcc1.copy();
|
||||
String copiedPccID = copiedPcc.getId();
|
||||
|
||||
assertTrue(copiedPcc instanceof BackboneElement); // Just making sure this assumption still holds up, otherwise this test isn't very useful
|
||||
assertEquals("1001", copiedPccID);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package org.hl7.fhir.r4.model;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import org.junit.Test;
|
||||
|
||||
public class DomainResourceR4Test {
|
||||
/**
|
||||
* Ensuring that fields defined in {@link DomainResource} and {@link Resource}
|
||||
* get copied when the {@link DomainResource#copy()} method is called
|
||||
*/
|
||||
@Test
|
||||
public void testPatientCopy() {
|
||||
Patient p1 = new Patient();
|
||||
p1.setId("1001");
|
||||
p1.setText(new Narrative().setStatus(Narrative.NarrativeStatus.ADDITIONAL));
|
||||
|
||||
Patient copiedPatient = p1.copy();
|
||||
String copiedPatientID = copiedPatient.getIdElement().getIdPart();
|
||||
Narrative.NarrativeStatus copiedPatientTextStatus = copiedPatient.getText().getStatus();
|
||||
|
||||
assertTrue(copiedPatient instanceof DomainResource); // Just making sure this assumption still holds up, otherwise this test isn't very useful
|
||||
assertEquals("1001", copiedPatientID);
|
||||
assertEquals(new Narrative().setStatus(Narrative.NarrativeStatus.ADDITIONAL).getStatus(), copiedPatientTextStatus);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package org.hl7.fhir.r4.model;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import org.junit.Test;
|
||||
|
||||
public class MetadataResourceR4Test {
|
||||
/**
|
||||
* Ensuring that fields defined in {@link MetadataResource}, {@link DomainResource}, and {@link Resource}
|
||||
* get copied when the {@link MetadataResource#copy()} method is called
|
||||
*/
|
||||
@Test
|
||||
public void testCodeSystemCopy() {
|
||||
CodeSystem codeSystem1 = new CodeSystem();
|
||||
codeSystem1.setId("1001");
|
||||
codeSystem1.setName("Name123");
|
||||
codeSystem1.setText(new Narrative().setStatus(Narrative.NarrativeStatus.ADDITIONAL));
|
||||
|
||||
CodeSystem copiedCodeSystem = codeSystem1.copy();
|
||||
String copiedCodeSystemID = copiedCodeSystem.getId();
|
||||
String copiedCodeSystemName = copiedCodeSystem.getName();
|
||||
Narrative.NarrativeStatus copiedCodeSystemTextStatus = copiedCodeSystem.getText().getStatus();
|
||||
|
||||
assertTrue(copiedCodeSystem instanceof MetadataResource); // Just making sure this assumption still holds up, otherwise this test isn't very useful
|
||||
assertEquals("1001", copiedCodeSystemID);
|
||||
assertEquals("Name123", copiedCodeSystemName);
|
||||
assertEquals(new Narrative().setStatus(Narrative.NarrativeStatus.ADDITIONAL).getStatus(), copiedCodeSystemTextStatus);
|
||||
}
|
||||
}
|
|
@ -48,39 +48,6 @@ public class GraphQLDstu3ProviderTest {
|
|||
private static int ourPort;
|
||||
private static Server ourServer;
|
||||
|
||||
@AfterClass
|
||||
public static void afterClassClearContext() throws Exception {
|
||||
ourServer.stop();
|
||||
TestUtil.clearAllStaticFieldsForUnitTest();
|
||||
}
|
||||
|
||||
@BeforeClass
|
||||
public static void beforeClass() throws Exception {
|
||||
ourPort = PortUtil.findFreePort();
|
||||
ourServer = new Server(ourPort);
|
||||
|
||||
|
||||
|
||||
ServletHandler proxyHandler = new ServletHandler();
|
||||
RestfulServer servlet = new RestfulServer(ourCtx);
|
||||
servlet.setDefaultResponseEncoding(EncodingEnum.JSON);
|
||||
servlet.setPagingProvider(new FifoMemoryPagingProvider(10));
|
||||
|
||||
servlet.registerProvider(new DummyPatientResourceProvider());
|
||||
MyStorageServices storageServices = new MyStorageServices();
|
||||
servlet.registerProvider(new GraphQLProviderDstu3(ourCtx, new DefaultProfileValidationSupport(), storageServices));
|
||||
ServletHolder servletHolder = new ServletHolder(servlet);
|
||||
proxyHandler.addServletWithMapping(servletHolder, "/*");
|
||||
ourServer.setHandler(proxyHandler);
|
||||
ourServer.start();
|
||||
|
||||
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(5000, TimeUnit.MILLISECONDS);
|
||||
HttpClientBuilder builder = HttpClientBuilder.create();
|
||||
builder.setConnectionManager(connectionManager);
|
||||
ourClient = builder.build();
|
||||
|
||||
}
|
||||
|
||||
@Before
|
||||
public void before() {
|
||||
//nothing
|
||||
|
@ -97,76 +64,14 @@ public class GraphQLDstu3ProviderTest {
|
|||
ourLog.info(responseContent);
|
||||
assertEquals(200, status.getStatusLine().getStatusCode());
|
||||
|
||||
assertEquals("{\n" +
|
||||
assertEquals(TestUtil.stripReturns("{\n" +
|
||||
" \"name\":[{\n" +
|
||||
" \"family\":[\"FAMILY\"],\n" +
|
||||
" \"given\":[\"GIVEN1\",\"GIVEN2\"]\n" +
|
||||
" },{\n" +
|
||||
" \"given\":[\"GivenOnly1\",\"GivenOnly2\"]\n" +
|
||||
" }]\n" +
|
||||
"}", responseContent);
|
||||
assertThat(status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue(), Matchers.startsWith("application/json"));
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(status.getEntity().getContent());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@org.junit.Ignore
|
||||
public void testGraphSystemInstance() throws Exception {
|
||||
String query = "{Patient(id:123){id,name{given,family}}}";
|
||||
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/$graphql?query=" + UrlUtil.escape(query));
|
||||
CloseableHttpResponse status = ourClient.execute(httpGet);
|
||||
try {
|
||||
String responseContent = IOUtils.toString(status.getEntity().getContent(), StandardCharsets.UTF_8);
|
||||
ourLog.info(responseContent);
|
||||
assertEquals(200, status.getStatusLine().getStatusCode());
|
||||
|
||||
assertEquals("{\n" +
|
||||
" \"Patient\":{\n" +
|
||||
" \"name\":[{\n" +
|
||||
" \"given\":[\"GIVEN1\",\"GIVEN2\"],\n" +
|
||||
" \"family\":[\"FAMILY\"]\n" +
|
||||
" },{\n" +
|
||||
" \"given\":[\"GivenOnly1\",\"GivenOnly2\"]\n" +
|
||||
" }]\n" +
|
||||
" }\n" +
|
||||
"}", responseContent);
|
||||
assertThat(status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue(), Matchers.startsWith("application/json"));
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(status.getEntity().getContent());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void testGraphSystemList() throws Exception {
|
||||
String query = "{PatientList(name:\"pet\"){name{family,given}}}";
|
||||
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/$graphql?query=" + UrlUtil.escape(query));
|
||||
CloseableHttpResponse status = ourClient.execute(httpGet);
|
||||
try {
|
||||
String responseContent = IOUtils.toString(status.getEntity().getContent(), StandardCharsets.UTF_8);
|
||||
ourLog.info(responseContent);
|
||||
assertEquals(200, status.getStatusLine().getStatusCode());
|
||||
|
||||
assertEquals("{\n" +
|
||||
" \"PatientList\":[{\n" +
|
||||
" \"name\":[{\n" +
|
||||
" \"family\":[\"pet\"],\n" +
|
||||
" \"given\":[\"GIVEN1\",\"GIVEN2\"]\n" +
|
||||
" },{\n" +
|
||||
" \"given\":[\"GivenOnly1\",\"GivenOnly2\"]\n" +
|
||||
" }]\n" +
|
||||
" },{\n" +
|
||||
" \"name\":[{\n" +
|
||||
" \"given\":[\"GivenOnlyB1\",\"GivenOnlyB2\"]\n" +
|
||||
" }]\n" +
|
||||
" }]\n" +
|
||||
"}", responseContent);
|
||||
"}"), TestUtil.stripReturns(responseContent));
|
||||
assertThat(status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue(), Matchers.startsWith("application/json"));
|
||||
|
||||
} finally {
|
||||
|
@ -186,12 +91,12 @@ public class GraphQLDstu3ProviderTest {
|
|||
ourLog.info(responseContent);
|
||||
assertEquals(200, status.getStatusLine().getStatusCode());
|
||||
|
||||
assertEquals("{\n" +
|
||||
assertEquals(TestUtil.stripReturns("{\n" +
|
||||
" \"name\":[{\n" +
|
||||
" \"given\":[\"GIVEN1\",\"GIVEN2\"],\n" +
|
||||
" \"family\":[\"FAMILY\"]\n" +
|
||||
" }]\n" +
|
||||
"}", responseContent);
|
||||
"}"), TestUtil.stripReturns(responseContent));
|
||||
assertThat(status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue(), Matchers.startsWith("application/json"));
|
||||
|
||||
} finally {
|
||||
|
@ -200,6 +105,100 @@ public class GraphQLDstu3ProviderTest {
|
|||
|
||||
}
|
||||
|
||||
@Test
|
||||
@org.junit.Ignore
|
||||
public void testGraphSystemInstance() throws Exception {
|
||||
String query = "{Patient(id:123){id,name{given,family}}}";
|
||||
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/$graphql?query=" + UrlUtil.escape(query));
|
||||
CloseableHttpResponse status = ourClient.execute(httpGet);
|
||||
try {
|
||||
String responseContent = IOUtils.toString(status.getEntity().getContent(), StandardCharsets.UTF_8);
|
||||
ourLog.info(responseContent);
|
||||
assertEquals(200, status.getStatusLine().getStatusCode());
|
||||
|
||||
assertEquals(TestUtil.stripReturns("{\n" +
|
||||
" \"Patient\":{\n" +
|
||||
" \"name\":[{\n" +
|
||||
" \"given\":[\"GIVEN1\",\"GIVEN2\"],\n" +
|
||||
" \"family\":[\"FAMILY\"]\n" +
|
||||
" },{\n" +
|
||||
" \"given\":[\"GivenOnly1\",\"GivenOnly2\"]\n" +
|
||||
" }]\n" +
|
||||
" }\n" +
|
||||
"}"), TestUtil.stripReturns(responseContent));
|
||||
assertThat(status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue(), Matchers.startsWith("application/json"));
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(status.getEntity().getContent());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void testGraphSystemList() throws Exception {
|
||||
String query = "{PatientList(name:\"pet\"){name{family,given}}}";
|
||||
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/$graphql?query=" + UrlUtil.escape(query));
|
||||
CloseableHttpResponse status = ourClient.execute(httpGet);
|
||||
try {
|
||||
String responseContent = IOUtils.toString(status.getEntity().getContent(), StandardCharsets.UTF_8);
|
||||
ourLog.info(responseContent);
|
||||
assertEquals(200, status.getStatusLine().getStatusCode());
|
||||
|
||||
assertEquals(TestUtil.stripReturns("{\n" +
|
||||
" \"PatientList\":[{\n" +
|
||||
" \"name\":[{\n" +
|
||||
" \"family\":[\"pet\"],\n" +
|
||||
" \"given\":[\"GIVEN1\",\"GIVEN2\"]\n" +
|
||||
" },{\n" +
|
||||
" \"given\":[\"GivenOnly1\",\"GivenOnly2\"]\n" +
|
||||
" }]\n" +
|
||||
" },{\n" +
|
||||
" \"name\":[{\n" +
|
||||
" \"given\":[\"GivenOnlyB1\",\"GivenOnlyB2\"]\n" +
|
||||
" }]\n" +
|
||||
" }]\n" +
|
||||
"}"), TestUtil.stripReturns(responseContent));
|
||||
assertThat(status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue(), Matchers.startsWith("application/json"));
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(status.getEntity().getContent());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void afterClassClearContext() throws Exception {
|
||||
ourServer.stop();
|
||||
TestUtil.clearAllStaticFieldsForUnitTest();
|
||||
}
|
||||
|
||||
@BeforeClass
|
||||
public static void beforeClass() throws Exception {
|
||||
ourPort = PortUtil.findFreePort();
|
||||
ourServer = new Server(ourPort);
|
||||
|
||||
|
||||
ServletHandler proxyHandler = new ServletHandler();
|
||||
RestfulServer servlet = new RestfulServer(ourCtx);
|
||||
servlet.setDefaultResponseEncoding(EncodingEnum.JSON);
|
||||
servlet.setPagingProvider(new FifoMemoryPagingProvider(10));
|
||||
|
||||
servlet.registerProvider(new DummyPatientResourceProvider());
|
||||
MyStorageServices storageServices = new MyStorageServices();
|
||||
servlet.registerProvider(new GraphQLProviderDstu3(ourCtx, new DefaultProfileValidationSupport(), storageServices));
|
||||
ServletHolder servletHolder = new ServletHolder(servlet);
|
||||
proxyHandler.addServletWithMapping(servletHolder, "/*");
|
||||
ourServer.setHandler(proxyHandler);
|
||||
ourServer.start();
|
||||
|
||||
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(5000, TimeUnit.MILLISECONDS);
|
||||
HttpClientBuilder builder = HttpClientBuilder.create();
|
||||
builder.setConnectionManager(connectionManager);
|
||||
ourClient = builder.build();
|
||||
|
||||
}
|
||||
|
||||
public static class DummyPatientResourceProvider implements IResourceProvider {
|
||||
|
||||
@Override
|
||||
|
@ -225,31 +224,6 @@ public class GraphQLDstu3ProviderTest {
|
|||
}
|
||||
|
||||
private static class MyStorageServices implements IGraphQLStorageServices<Resource, Reference, Bundle> {
|
||||
@Override
|
||||
public ReferenceResolution<Resource> lookup(Object theAppInfo, Resource theContext, Reference theReference) throws FHIRException {
|
||||
ourLog.info("lookup from {} to {}", theContext.getIdElement().getValue(), theReference.getReference());
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resource lookup(Object theAppInfo, String theType, String theId) throws FHIRException {
|
||||
ourLog.info("lookup {}/{}", theType, theId);
|
||||
|
||||
if (theType.equals("Patient") && theId.equals("123")) {
|
||||
Patient p = new Patient();
|
||||
p.addName()
|
||||
.setFamily("FAMILY")
|
||||
.addGiven("GIVEN1")
|
||||
.addGiven("GIVEN2");
|
||||
p.addName()
|
||||
.addGiven("GivenOnly1")
|
||||
.addGiven("GivenOnly2");
|
||||
return p;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void listResources(Object theAppInfo, String theType, List<Argument> theSearchParams, List<Resource> theMatches) throws FHIRException {
|
||||
ourLog.info("listResources of {} - {}", theType, theSearchParams);
|
||||
|
@ -277,6 +251,31 @@ public class GraphQLDstu3ProviderTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resource lookup(Object theAppInfo, String theType, String theId) throws FHIRException {
|
||||
ourLog.info("lookup {}/{}", theType, theId);
|
||||
|
||||
if (theType.equals("Patient") && theId.equals("123")) {
|
||||
Patient p = new Patient();
|
||||
p.addName()
|
||||
.setFamily("FAMILY")
|
||||
.addGiven("GIVEN1")
|
||||
.addGiven("GIVEN2");
|
||||
p.addName()
|
||||
.addGiven("GivenOnly1")
|
||||
.addGiven("GivenOnly2");
|
||||
return p;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReferenceResolution<Resource> lookup(Object theAppInfo, Resource theContext, Reference theReference) throws FHIRException {
|
||||
ourLog.info("lookup from {} to {}", theContext.getIdElement().getValue(), theReference.getReference());
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Bundle search(Object theAppInfo, String theType, List<Argument> theSearchParams) throws FHIRException {
|
||||
ourLog.info("search on {} - {}", theType, theSearchParams);
|
||||
|
|
|
@ -166,6 +166,10 @@
|
|||
being acceptable for CORS requests in CorsInterceptor, CLI, and JPA Example.
|
||||
Thanks to Patrick Werner for the pull request!
|
||||
</action>
|
||||
<action type="fix" issue="725">
|
||||
DSTU2-hl7org and DSTU2.1 structures did not copy resource IDs when invoking
|
||||
copyValues(). Thanks to Clayton Bodendein for the pull request!
|
||||
</action>
|
||||
</release>
|
||||
<release version="3.0.0" date="2017-09-27">
|
||||
<action type="add">
|
||||
|
|
Loading…
Reference in New Issue