FIx a bunch more unit tests
This commit is contained in:
parent
1c05bcb29c
commit
0ece666c88
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<assembly xmlns="urn:assembly" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:assembly http://maven.apache.org/xsd/assembly-1.1.2.xsd">
|
||||
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
|
||||
|
||||
<id>all</id>
|
||||
|
||||
|
|
|
@ -241,10 +241,6 @@ public class FhirContext {
|
|||
myNarrativeGenerator = theNarrativeGenerator;
|
||||
}
|
||||
|
||||
public void setRestfulClientFactory(IRestfulClientFactory theRestfulClientFactory) {
|
||||
myRestfulClientFactory = theRestfulClientFactory;
|
||||
}
|
||||
|
||||
private RuntimeResourceDefinition scanResourceType(Class<? extends IResource> theResourceType) {
|
||||
ArrayList<Class<? extends IResource>> resourceTypes = new ArrayList<Class<? extends IResource>>();
|
||||
resourceTypes.add(theResourceType);
|
||||
|
|
|
@ -656,7 +656,7 @@ public class XmlParser extends BaseParser implements IParser {
|
|||
} else {
|
||||
if (StringUtils.isBlank(se.getName().getPrefix())) {
|
||||
theEventWriter.writeStartElement(se.getName().getLocalPart());
|
||||
theEventWriter.writeDefaultNamespace(se.getName().getNamespaceURI());
|
||||
// theEventWriter.writeDefaultNamespace(se.getName().getNamespaceURI());
|
||||
} else {
|
||||
theEventWriter.writeStartElement(se.getName().getNamespaceURI(), se.getName().getLocalPart());
|
||||
}
|
||||
|
|
|
@ -391,7 +391,8 @@ public class GenericClient extends BaseClient implements IGenericClient {
|
|||
|
||||
public ForInternal(Class<? extends IResource> theResourceType) {
|
||||
myResourceType = theResourceType;
|
||||
myResourceName = myContext.getResourceDefinition(theResourceType).getName();
|
||||
RuntimeResourceDefinition definition = myContext.getResourceDefinition(theResourceType);
|
||||
myResourceName = definition.getName();
|
||||
}
|
||||
|
||||
public ForInternal(String theResourceName) {
|
||||
|
|
|
@ -66,4 +66,13 @@ public interface IRestfulClientFactory {
|
|||
*/
|
||||
IGenericClient newGenericClient(String theServerBase);
|
||||
|
||||
|
||||
void setSocketTimeout(int theSocketTimeout);
|
||||
|
||||
|
||||
void setConnectTimeout(int theConnectTimeout);
|
||||
|
||||
|
||||
void setConnectionRequestTimeout(int theConnectionRequestTimeout);
|
||||
|
||||
}
|
||||
|
|
|
@ -155,11 +155,13 @@ public class RestfulClientFactory implements IRestfulClientFactory {
|
|||
return new GenericClient(myContext, getHttpClient(), theServerBase);
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void setConnectionRequestTimeout(int theConnectionRequestTimeout) {
|
||||
myConnectionRequestTimeout = theConnectionRequestTimeout;
|
||||
myHttpClient=null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void setConnectTimeout(int theConnectTimeout) {
|
||||
myConnectTimeout = theConnectTimeout;
|
||||
myHttpClient=null;
|
||||
|
@ -177,6 +179,7 @@ public class RestfulClientFactory implements IRestfulClientFactory {
|
|||
myHttpClient = theHttpClient;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void setSocketTimeout(int theSocketTimeout) {
|
||||
mySocketTimeout = theSocketTimeout;
|
||||
myHttpClient=null;
|
||||
|
|
|
@ -121,7 +121,7 @@ public class RestfulServer extends HttpServlet {
|
|||
* </p>
|
||||
*/
|
||||
public void addHeadersToResponse(HttpServletResponse theHttpResponse) {
|
||||
theHttpResponse.addHeader("X-PoweredBy", "HAPI FHIR " + VersionUtil.getVersion() + " RESTful Server");
|
||||
theHttpResponse.addHeader("X-Powered-By", "HAPI FHIR " + VersionUtil.getVersion() + " RESTful Server");
|
||||
}
|
||||
|
||||
private void assertProviderIsValid(Object theNext) throws ConfigurationException {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<project xmlns="urn:site" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:site http://maven.apache.org/xsd/decoration-1.1.0.xsd" name="HAPI">
|
||||
|
||||
<project xmlns="http://maven.apache.org/DECORATION/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/DECORATION/1.1.0 http://maven.apache.org/xsd/decoration-1.1.0.xsd" name="HAPI">
|
||||
|
||||
<bannerLeft>
|
||||
<name>HAPI</name>
|
||||
<src>images/hapi_fhir_banner.png</src>
|
||||
|
@ -21,6 +21,23 @@
|
|||
<version position="left" />
|
||||
|
||||
<body>
|
||||
<head>
|
||||
<!-- Syntax Highlighter -->
|
||||
<script type="text/javascript" src="syntaxhighlighter/shCore.js"></script>
|
||||
<script type="text/javascript" src="syntaxhighlighter/shBrushJScript.js"></script>
|
||||
<script type="text/javascript" src="syntaxhighlighter/shBrushJava.js"></script>
|
||||
<script type="text/javascript" src="syntaxhighlighter/shBrushBash.js"></script>
|
||||
<script type="text/javascript" src="syntaxhighlighter/shBrushXml.js"></script>
|
||||
<link href="syntaxhighlighter/shCore.css" rel="stylesheet" type="text/css" />
|
||||
<link href="syntaxhighlighter/shThemeDefault.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<!--
|
||||
HAPI stylesheet comes after because it overwrites the Syntax Highlighter
|
||||
font size
|
||||
-->
|
||||
<link rel="shortcut icon" href="http://hl7api.sourceforge.net/images/favicon.png" />
|
||||
<link rel="stylesheet" type="text/css" href="hapi.css" />
|
||||
</head>
|
||||
|
||||
<links>
|
||||
<item name="Sourceforge Project Page" href="https://sourceforge.net/projects/hl7api/" />
|
||||
|
@ -57,24 +74,6 @@
|
|||
<item name="Source Code" href="http://sourceforge.net/p/hl7api/fhircode/ci/master/tree/" />
|
||||
</menu>
|
||||
|
||||
<head>
|
||||
<!-- Syntax Highlighter -->
|
||||
<script type="text/javascript" src="syntaxhighlighter/shCore.js"></script>
|
||||
<script type="text/javascript" src="syntaxhighlighter/shBrushJScript.js"></script>
|
||||
<script type="text/javascript" src="syntaxhighlighter/shBrushJava.js"></script>
|
||||
<script type="text/javascript" src="syntaxhighlighter/shBrushBash.js"></script>
|
||||
<script type="text/javascript" src="syntaxhighlighter/shBrushXml.js"></script>
|
||||
<link href="syntaxhighlighter/shCore.css" rel="stylesheet" type="text/css" />
|
||||
<link href="syntaxhighlighter/shThemeDefault.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<!--
|
||||
HAPI stylesheet comes after because it overwrites the Syntax Highlighter
|
||||
font size
|
||||
-->
|
||||
<link rel="shortcut icon" href="http://hl7api.sourceforge.net/images/favicon.png" />
|
||||
<link rel="stylesheet" type="text/css" href="hapi.css" />
|
||||
</head>
|
||||
|
||||
</body>
|
||||
|
||||
<skin>
|
||||
|
@ -91,3 +90,4 @@
|
|||
</custom>
|
||||
|
||||
</project>
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
to the Maven repos and the Sourceforge download system. This release corrects a large number of
|
||||
bugs and includes fixes which were implemented in the recent FHIR Connectathon.
|
||||
<br/>
|
||||
&emdash; <a href="mailto:jamesagnew@users.sourceforge.net">James Agnew</a>
|
||||
<![CDATA[ &emdash; ]]><a href="mailto:jamesagnew@users.sourceforge.net">James Agnew</a>
|
||||
</p>
|
||||
|
||||
</section>
|
||||
|
|
|
@ -74,7 +74,7 @@ public class XmlParserTest {
|
|||
|
||||
patient.getGender().setValueAsEnum(AdministrativeGenderCodesEnum.M);
|
||||
|
||||
String val = new FhirContext().newXmlParser().encodeResourceToString(patient);
|
||||
String val = ourCtx.newXmlParser().encodeResourceToString(patient);
|
||||
ourLog.info(val);
|
||||
|
||||
}
|
||||
|
@ -149,7 +149,7 @@ public class XmlParserTest {
|
|||
parameter.setUrl("http://foo").setValue(new StringDt("bar"));
|
||||
|
||||
|
||||
String val = new FhirContext().newXmlParser().encodeResourceToString(q);
|
||||
String val = ourCtx.newXmlParser().encodeResourceToString(q);
|
||||
ourLog.info(val);
|
||||
|
||||
assertEquals("<Query xmlns=\"http://hl7.org/fhir\"><parameter url=\"http://foo\"><valueString value=\"bar\"/></parameter></Query>", val);
|
||||
|
@ -214,7 +214,7 @@ public class XmlParserTest {
|
|||
"</taglist>";
|
||||
//@formatter:on
|
||||
|
||||
String encoded = new FhirContext().newXmlParser().encodeTagListToString(tagList);
|
||||
String encoded = ourCtx.newXmlParser().encodeTagListToString(tagList);
|
||||
assertEquals(expected,encoded);
|
||||
|
||||
}
|
||||
|
@ -235,13 +235,13 @@ public class XmlParserTest {
|
|||
"</feed>";
|
||||
//@formatter:off
|
||||
|
||||
Bundle bundleR = new FhirContext().newXmlParser().parseBundle(bundle);
|
||||
Bundle bundleR = ourCtx.newXmlParser().parseBundle(bundle);
|
||||
assertEquals(15, bundleR.getTotalResults().getValue().intValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEncodeExtensionWithResourceContent() {
|
||||
IParser parser = new FhirContext().newXmlParser();
|
||||
IParser parser = ourCtx.newXmlParser();
|
||||
|
||||
Patient patient = new Patient();
|
||||
patient.addAddress().setUse(AddressUseEnum.HOME);
|
||||
|
@ -262,7 +262,7 @@ public class XmlParserTest {
|
|||
|
||||
@Test
|
||||
public void testEncodeDeclaredExtensionWithResourceContent() {
|
||||
IParser parser = new FhirContext().newXmlParser();
|
||||
IParser parser = ourCtx.newXmlParser();
|
||||
|
||||
MyPatientWithOneDeclaredExtension patient = new MyPatientWithOneDeclaredExtension();
|
||||
patient.addAddress().setUse(AddressUseEnum.HOME);
|
||||
|
@ -281,7 +281,7 @@ public class XmlParserTest {
|
|||
|
||||
@Test
|
||||
public void testEncodeDeclaredExtensionWithAddressContent() {
|
||||
IParser parser = new FhirContext().newXmlParser();
|
||||
IParser parser = ourCtx.newXmlParser();
|
||||
|
||||
MyPatientWithOneDeclaredAddressExtension patient = new MyPatientWithOneDeclaredAddressExtension();
|
||||
patient.addAddress().setUse(AddressUseEnum.HOME);
|
||||
|
@ -300,7 +300,7 @@ public class XmlParserTest {
|
|||
|
||||
@Test
|
||||
public void testEncodeUndeclaredExtensionWithAddressContent() {
|
||||
IParser parser = new FhirContext().newXmlParser();
|
||||
IParser parser = ourCtx.newXmlParser();
|
||||
|
||||
Patient patient = new Patient();
|
||||
patient.addAddress().setUse(AddressUseEnum.HOME);
|
||||
|
@ -323,7 +323,7 @@ public class XmlParserTest {
|
|||
Bundle b = new Bundle();
|
||||
b.getTotalResults().setValue(123);
|
||||
|
||||
String val = new FhirContext().newXmlParser().setPrettyPrint(true).encodeBundleToString(b);
|
||||
String val = ourCtx.newXmlParser().setPrettyPrint(true).encodeBundleToString(b);
|
||||
ourLog.info(val);
|
||||
|
||||
assertThat(val, StringContains.containsString("<os:totalResults xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\">123</os:totalResults>"));
|
||||
|
@ -338,12 +338,12 @@ public class XmlParserTest {
|
|||
e.setResource(new Patient());
|
||||
e.addCategory().setLabel("label").setTerm("term").setScheme("scheme");
|
||||
|
||||
String val = new FhirContext().newXmlParser().setPrettyPrint(true).encodeBundleToString(b);
|
||||
String val = ourCtx.newXmlParser().setPrettyPrint(true).encodeBundleToString(b);
|
||||
ourLog.info(val);
|
||||
|
||||
assertThat(val, StringContains.containsString("<category term=\"term\" label=\"label\" scheme=\"scheme\"/>"));
|
||||
|
||||
b = new FhirContext().newXmlParser().parseBundle(val);
|
||||
b = ourCtx.newXmlParser().parseBundle(val);
|
||||
assertEquals(1, b.getEntries().size());
|
||||
assertEquals(1, b.getEntries().get(0).getCategories().size());
|
||||
assertEquals("term", b.getEntries().get(0).getCategories().get(0).getTerm());
|
||||
|
@ -398,7 +398,7 @@ public class XmlParserTest {
|
|||
spm.getText().setDiv("AAA");
|
||||
rpt.addSpecimen().setResource(spm);
|
||||
|
||||
IParser p = new FhirContext(DiagnosticReport.class).newXmlParser().setPrettyPrint(true);
|
||||
IParser p = ourCtx.newXmlParser().setPrettyPrint(true);
|
||||
String str = p.encodeResourceToString(rpt);
|
||||
|
||||
ourLog.info(str);
|
||||
|
@ -418,7 +418,7 @@ public class XmlParserTest {
|
|||
Observation obs = new Observation();
|
||||
obs.setValue(new DecimalDt(112.22));
|
||||
|
||||
IParser p = new FhirContext(Observation.class).newJsonParser();
|
||||
IParser p = ourCtx.newJsonParser();
|
||||
|
||||
try {
|
||||
p.encodeResourceToString(obs);
|
||||
|
@ -435,7 +435,7 @@ public class XmlParserTest {
|
|||
patient.addName().addFamily("Family").addGiven("Given");
|
||||
|
||||
//@formatter:off
|
||||
String encoded = new FhirContext().newXmlParser().setPrettyPrint(false).encodeResourceToString(patient);
|
||||
String encoded = ourCtx.newXmlParser().setPrettyPrint(false).encodeResourceToString(patient);
|
||||
ourLog.info(encoded);
|
||||
/*
|
||||
* Note at least one space is placed where any whitespace was, as
|
||||
|
@ -447,7 +447,7 @@ public class XmlParserTest {
|
|||
+ "</i> </div></text><name><family value=\"Family\"/><given value=\"Given\"/></name></Patient>";
|
||||
assertEquals(expected, encoded);
|
||||
|
||||
encoded = new FhirContext().newXmlParser().setPrettyPrint(true).encodeResourceToString(patient);
|
||||
encoded = ourCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(patient);
|
||||
ourLog.info(encoded);
|
||||
expected = "<Patient xmlns=\"http://hl7.org/fhir\">\n"
|
||||
+ " <text>\n"
|
||||
|
@ -476,7 +476,7 @@ public class XmlParserTest {
|
|||
Patient patient = new Patient();
|
||||
patient.setManagingOrganization(new ResourceReferenceDt());
|
||||
|
||||
IParser p = new FhirContext().newXmlParser();
|
||||
IParser p = ourCtx.newXmlParser();
|
||||
String str = p.encodeResourceToString(patient);
|
||||
assertThat(str, IsNot.not(StringContains.containsString("managingOrganization")));
|
||||
|
||||
|
@ -502,7 +502,7 @@ public class XmlParserTest {
|
|||
|
||||
patient.addName().addFamily("Smith");
|
||||
|
||||
IParser p = new FhirContext().newXmlParser();
|
||||
IParser p = ourCtx.newXmlParser();
|
||||
String str = p.encodeResourceToString(patient);
|
||||
|
||||
ourLog.info(str);
|
||||
|
@ -745,7 +745,7 @@ public class XmlParserTest {
|
|||
NarrativeDt nar = new NarrativeDt(xhtmlDt, NarrativeStatusEnum.GENERATED);
|
||||
when(gen.generateNarrative(eq("http://hl7.org/fhir/profiles/Patient"), eq(patient))).thenReturn(nar);
|
||||
|
||||
FhirContext context = new FhirContext();
|
||||
FhirContext context = ourCtx;
|
||||
context.setNarrativeGenerator(gen);
|
||||
IParser p = context.newXmlParser();
|
||||
String str = p.encodeResourceToString(patient);
|
||||
|
@ -946,6 +946,26 @@ public class XmlParserTest {
|
|||
assertEquals("_id", res.getSearchParam().get(1).getName().getValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testParseEncodeNarrative() {
|
||||
|
||||
String input = "<Patient xmlns=\"http://hl7.org/fhir\"><text><status value=\"generated\"/><div xmlns=\"http://www.w3.org/1999/xhtml\"><div class=\"hapiHeaderText\"> Donald null <b>DUCK </b></div><table class=\"hapiPropertyTable\"><tbody><tr><td>Identifier</td><td>7000135</td></tr><tr><td>Address</td><td><span>10 Duxon Street </span><br/><span>VICTORIA </span><span>BC </span><span>Can </span></td></tr><tr><td>Date of birth</td><td><span>01 June 1980</span></td></tr></tbody></table></div></text><identifier><use value=\"official\"/><label value=\"University Health Network MRN 7000135\"/><system value=\"urn:oid:2.16.840.1.113883.3.239.18.148\"/><value value=\"7000135\"/><assigner><reference value=\"Organization/1.3.6.1.4.1.12201\"/></assigner></identifier><name><family value=\"Duck\"/><given value=\"Donald\"/></name><telecom><system value=\"phone\"/><use value=\"home\"/></telecom><telecom><system value=\"phone\"/><use value=\"work\"/></telecom><telecom><system value=\"phone\"/><use value=\"mobile\"/></telecom><telecom><system value=\"email\"/><use value=\"home\"/></telecom><gender><coding><system value=\"http://hl7.org/fhir/v3/AdministrativeGender\"/><code value=\"M\"/></coding></gender><birthDate value=\"1980-06-01T00:00:00\"/><address><use value=\"home\"/><line value=\"10 Duxon Street\"/><city value=\"VICTORIA\"/><state value=\"BC\"/><zip value=\"V8N 1Y4\"/><country value=\"Can\"/></address><managingOrganization><reference value=\"Organization/1.3.6.1.4.1.12201\"/></managingOrganization></Patient>";
|
||||
IResource res = ourCtx.newXmlParser().parseResource(input);
|
||||
|
||||
String output = ourCtx.newXmlParser().encodeResourceToString(res);
|
||||
|
||||
// Should occur exactly twice (once for the resource, once for the DIV
|
||||
assertThat(output, (StringContainsInOrder.stringContainsInOrder(Arrays.asList("Patient xmlns", "div xmlns"))));
|
||||
assertThat(output, not(StringContainsInOrder.stringContainsInOrder(Arrays.asList("b xmlns"))));
|
||||
|
||||
output = ourCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(res);
|
||||
|
||||
// Should occur exactly twice (once for the resource, once for the DIV
|
||||
assertThat(output, (StringContainsInOrder.stringContainsInOrder(Arrays.asList("Patient xmlns", "div xmlns"))));
|
||||
assertThat(output, not(StringContainsInOrder.stringContainsInOrder(Arrays.asList("b xmlns"))));
|
||||
|
||||
}
|
||||
|
||||
@BeforeClass
|
||||
public static void beforeClass() {
|
||||
XMLUnit.setIgnoreAttributeOrder(true);
|
||||
|
@ -989,10 +1009,10 @@ public class XmlParserTest {
|
|||
parent.addUndeclaredExtension(child2);
|
||||
// END SNIPPET: subExtension
|
||||
|
||||
String output = new FhirContext().newXmlParser().setPrettyPrint(true).encodeResourceToString(patient);
|
||||
String output = ourCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(patient);
|
||||
ourLog.info(output);
|
||||
|
||||
String enc = new FhirContext().newXmlParser().encodeResourceToString(patient);
|
||||
String enc = ourCtx.newXmlParser().encodeResourceToString(patient);
|
||||
assertThat(enc, containsString("<Patient xmlns=\"http://hl7.org/fhir\"><extension url=\"http://example.com/extensions#someext\"><valueDateTime value=\"2011-01-02T11:13:15\"/></extension>"));
|
||||
assertThat(enc, containsString("<extension url=\"http://example.com#parent\"><extension url=\"http://example.com#child\"><valueString value=\"value1\"/></extension><extension url=\"http://example.com#child\"><valueString value=\"value1\"/></extension></extension>"));
|
||||
assertThat(enc, containsString("<given value=\"Joe\"><extension url=\"http://examples.com#givenext\"><valueString value=\"given\"/></extension></given>"));
|
||||
|
@ -1008,13 +1028,13 @@ public class XmlParserTest {
|
|||
HumanNameDt given = name.addGiven("Joe");
|
||||
ExtensionDt ext2 = new ExtensionDt(false, "http://examples.com#givenext", new StringDt("Hello"));
|
||||
given.addUndeclaredExtension(ext2);
|
||||
String output = new FhirContext().newXmlParser().setPrettyPrint(true).encodeResourceToString(patient);
|
||||
String output = ourCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(patient);
|
||||
ourLog.info(output);
|
||||
|
||||
String enc = new FhirContext().newXmlParser().encodeResourceToString(patient);
|
||||
String enc = ourCtx.newXmlParser().encodeResourceToString(patient);
|
||||
assertThat(enc, containsString("<name><extension url=\"http://examples.com#givenext\"><valueString value=\"Hello\"/></extension><family value=\"Shmoe\"/><given value=\"Joe\"/></name>"));
|
||||
|
||||
Patient parsed = new FhirContext().newXmlParser().parseResource(Patient.class, new StringReader(enc));
|
||||
Patient parsed = ourCtx.newXmlParser().parseResource(Patient.class, new StringReader(enc));
|
||||
assertEquals(1, parsed.getNameFirstRep().getUndeclaredExtensionsByUrl("http://examples.com#givenext").size());
|
||||
ExtensionDt ext = parsed.getNameFirstRep().getUndeclaredExtensionsByUrl("http://examples.com#givenext").get(0);
|
||||
assertEquals("Hello", ext.getValueAsPrimitive().getValue());
|
||||
|
@ -1032,13 +1052,13 @@ public class XmlParserTest {
|
|||
|
||||
ExtensionDt ext2 = new ExtensionDt(false, "http://examples.com#givenext", new StringDt("Hello"));
|
||||
family.addUndeclaredExtension(ext2);
|
||||
String output = new FhirContext().newXmlParser().setPrettyPrint(true).encodeResourceToString(patient);
|
||||
String output = ourCtx.newXmlParser().setPrettyPrint(true).encodeResourceToString(patient);
|
||||
ourLog.info(output);
|
||||
|
||||
String enc = new FhirContext().newXmlParser().encodeResourceToString(patient);
|
||||
String enc = ourCtx.newXmlParser().encodeResourceToString(patient);
|
||||
assertThat(enc, containsString("<name><family value=\"Shmoe\"><extension url=\"http://examples.com#givenext\"><valueString value=\"Hello\"/></extension></family></name>"));
|
||||
|
||||
Patient parsed = new FhirContext().newXmlParser().parseResource(Patient.class, new StringReader(enc));
|
||||
Patient parsed = ourCtx.newXmlParser().parseResource(Patient.class, new StringReader(enc));
|
||||
assertEquals(1, parsed.getNameFirstRep().getFamilyFirstRep().getUndeclaredExtensionsByUrl("http://examples.com#givenext").size());
|
||||
ExtensionDt ext = parsed.getNameFirstRep().getFamilyFirstRep().getUndeclaredExtensionsByUrl("http://examples.com#givenext").get(0);
|
||||
assertEquals("Hello", ext.getValueAsPrimitive().getValue());
|
||||
|
|
|
@ -374,7 +374,10 @@ public class FhirResourceDao<T extends IResource> extends BaseFhirDao implements
|
|||
throw new IllegalArgumentException("Invalid token type: " + params.getClass());
|
||||
}
|
||||
|
||||
Predicate singleCode = builder.equal(from.get("myValueNormalized"), normalizeString(string));
|
||||
String likeExpression = normalizeString(string);
|
||||
likeExpression = likeExpression.replace("%", "[%]") + "%";
|
||||
|
||||
Predicate singleCode = builder.like(from.get("myValueNormalized").as(String.class), likeExpression);
|
||||
if (params instanceof StringParam && ((StringParam) params).isExact()) {
|
||||
Predicate exactCode = builder.equal(from.get("myValueExact"), string);
|
||||
singleCode = builder.and(singleCode, exactCode);
|
||||
|
@ -772,6 +775,10 @@ public class FhirResourceDao<T extends IResource> extends BaseFhirDao implements
|
|||
}
|
||||
|
||||
private void loadResourcesByPid(Collection<Long> theIncludePids, List<IResource> theResourceListToPopulate) {
|
||||
if (theIncludePids.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
CriteriaBuilder builder = myEntityManager.getCriteriaBuilder();
|
||||
CriteriaQuery<ResourceTable> cq = builder.createQuery(ResourceTable.class);
|
||||
Root<ResourceTable> from = cq.from(ResourceTable.class);
|
||||
|
|
|
@ -16,6 +16,7 @@ import org.junit.BeforeClass;
|
|||
import org.junit.Test;
|
||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
|
||||
import ca.uhn.fhir.context.FhirContext;
|
||||
import ca.uhn.fhir.model.api.IQueryParameterType;
|
||||
import ca.uhn.fhir.model.api.IResource;
|
||||
import ca.uhn.fhir.model.api.ResourceMetadataKeyEnum;
|
||||
|
@ -37,6 +38,7 @@ import ca.uhn.fhir.model.primitive.IdDt;
|
|||
import ca.uhn.fhir.model.primitive.InstantDt;
|
||||
import ca.uhn.fhir.model.primitive.StringDt;
|
||||
import ca.uhn.fhir.rest.api.MethodOutcome;
|
||||
import ca.uhn.fhir.rest.client.exceptions.FhirClientConnectionException;
|
||||
import ca.uhn.fhir.rest.param.DateRangeParam;
|
||||
import ca.uhn.fhir.rest.param.QualifiedDateParam;
|
||||
import ca.uhn.fhir.rest.param.ReferenceParam;
|
||||
|
@ -58,7 +60,50 @@ public class FhirResourceDaoTest {
|
|||
private static Date ourTestStarted;
|
||||
|
||||
private static IFhirResourceDao<Encounter> ourEncounterDao;
|
||||
private static FhirContext ourFhirCtx;
|
||||
|
||||
@Test
|
||||
public void testOrganizationName() {
|
||||
|
||||
//@formatter:off
|
||||
String inputStr = "{\"resourceType\":\"Organization\",\n" +
|
||||
" \"extension\":[\n" +
|
||||
" {\n" +
|
||||
" \"url\":\"http://fhir.connectinggta.ca/Profile/organization#providerIdPool\",\n" +
|
||||
" \"valueUri\":\"urn:oid:2.16.840.1.113883.3.239.23.21.1\"\n" +
|
||||
" }\n" +
|
||||
" ],\n" +
|
||||
" \"text\":{\n" +
|
||||
" \"status\":\"empty\",\n" +
|
||||
" \"div\":\"<div xmlns=\\\"http://www.w3.org/1999/xhtml\\\">No narrative template available for resource profile: http://fhir.connectinggta.ca/Profile/organization</div>\"\n" +
|
||||
" },\n" +
|
||||
" \"identifier\":[\n" +
|
||||
" {\n" +
|
||||
" \"use\":\"official\",\n" +
|
||||
" \"label\":\"HSP 2.16.840.1.113883.3.239.23.21\",\n" +
|
||||
" \"system\":\"urn:cgta:hsp_ids\",\n" +
|
||||
" \"value\":\"urn:oid:2.16.840.1.113883.3.239.23.21\"\n" +
|
||||
" }\n" +
|
||||
" ],\n" +
|
||||
" \"name\":\"Peterborough Regional Health Centre\"\n" +
|
||||
" }\n" +
|
||||
" }";
|
||||
//@formatter:on
|
||||
|
||||
Set<Long> val = ourOrganizationDao.searchForIds("name", new StringParam("P"));
|
||||
int initial = val.size();
|
||||
|
||||
Organization org = ourFhirCtx.newJsonParser().parseResource(Organization.class,inputStr);
|
||||
ourOrganizationDao.create(org);
|
||||
|
||||
val = ourOrganizationDao.searchForIds("name", new StringParam("P"));
|
||||
assertEquals(initial+1, val.size());
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void testStoreUnversionedResources() {
|
||||
Organization o1 = new Organization();
|
||||
|
@ -206,6 +251,23 @@ public class FhirResourceDaoTest {
|
|||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSearchWithNoResults() {
|
||||
IBundleProvider value = ourObservationDao.search(new SearchParameterMap());
|
||||
|
||||
/*
|
||||
* This may fail at some point, which means another test has probably added a device
|
||||
* resource. This test depends on there being none, so if that happens this test
|
||||
* should be refactored to use another resource type
|
||||
*/
|
||||
assertEquals(0, value.size());
|
||||
|
||||
List<IResource> res = value.getResources(0, 0);
|
||||
assertTrue(res.isEmpty());
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testPersistSearchParamQuantity() {
|
||||
Observation obs = new Observation();
|
||||
|
@ -222,6 +284,8 @@ public class FhirResourceDaoTest {
|
|||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void testPersistSearchParams() {
|
||||
Patient patient = new Patient();
|
||||
|
@ -878,6 +942,7 @@ public class FhirResourceDaoTest {
|
|||
ourOrganizationDao = ourCtx.getBean("myOrganizationDao", IFhirResourceDao.class);
|
||||
ourLocationDao = ourCtx.getBean("myLocationDao", IFhirResourceDao.class);
|
||||
ourEncounterDao = ourCtx.getBean("myEncounterDao", IFhirResourceDao.class);
|
||||
ourFhirCtx = new FhirContext();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
eclipse.preferences.version=1
|
||||
encoding//src/main/java=UTF-8
|
||||
encoding//src/main/resources=UTF-8
|
||||
encoding//src/test/java=UTF-8
|
||||
encoding//src/test/java/ca/uhn/fhir/jpa/test/Upload.java=UTF-8
|
||||
|
|
|
@ -32,7 +32,6 @@ public class CompleteResourceProviderTest {
|
|||
|
||||
private static ClassPathXmlApplicationContext ourAppCtx;
|
||||
private static FhirContext ourCtx;
|
||||
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(CompleteResourceProviderTest.class);
|
||||
|
||||
private static Server ourServer;
|
||||
private static IFhirResourceDao<Patient> patientDao;
|
||||
|
|
|
@ -23,16 +23,16 @@
|
|||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
||||
|
|
|
@ -21,12 +21,12 @@
|
|||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<name>org.eclipse.wst.validation.validationbuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.wst.validation.validationbuilder</name>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=1.7
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
|
@ -10,4 +10,4 @@ org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
|||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
||||
org.eclipse.jdt.core.compiler.source=1.7
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
|
||||
<wb-module deploy-name="hapi-fhir-jpaserver-uhnfhirtest">
|
||||
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
|
||||
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
|
||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
|
||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/target/generated-resources/tinder"/>
|
||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/target/generated-sources/tinder"/>
|
||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
|
||||
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
|
||||
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
|
||||
<dependent-module archiveName="hapi-fhir-jpaserver-base-0.4-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/hapi-fhir-jpaserver-base/hapi-fhir-jpaserver-base">
|
||||
<dependency-type>uses</dependency-type>
|
||||
</dependent-module>
|
||||
<dependent-module archiveName="hapi-fhir-base-0.4-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/hapi-fhir-base/hapi-fhir-base">
|
||||
<dependency-type>uses</dependency-type>
|
||||
</dependent-module>
|
||||
<dependent-module deploy-path="/" handle="module:/overlay/prj/hapi-fhir-tester-overlay?includes=**/**&excludes=META-INF/MANIFEST.MF">
|
||||
<dependent-module deploy-path="/" handle="module:/overlay/prj/hapi-fhir-testpage-overlay?includes=**/**&excludes=META-INF/MANIFEST.MF">
|
||||
<dependency-type>consumes</dependency-type>
|
||||
</dependent-module>
|
||||
<dependent-module deploy-path="/" handle="module:/overlay/slf/?includes=**/**&excludes=META-INF/MANIFEST.MF">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<faceted-project>
|
||||
<fixed facet="wst.jsdt.web"/>
|
||||
<installed facet="java" version="1.6"/>
|
||||
<installed facet="jst.web" version="3.0"/>
|
||||
<installed facet="wst.jsdt.web" version="1.0"/>
|
||||
<installed facet="java" version="1.7"/>
|
||||
<installed facet="jst.web" version="3.1"/>
|
||||
</faceted-project>
|
||||
|
|
|
@ -144,8 +144,8 @@
|
|||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<source>1.6</source>
|
||||
<target>1.6</target>
|
||||
<source>1.7</source>
|
||||
<target>1.7</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<div th:fragment="banner" class="well">
|
||||
<p>
|
||||
This is the home for the FHIR test server operated by
|
||||
<a href="http://uhn.ca">University Health Network</a>.
|
||||
</p>
|
||||
<p>
|
||||
<b style="color: red;">This is not a production server!</b>
|
||||
Do not store any information here that contains personal health information
|
||||
or otherwise confidential information. This server will be regularly purged
|
||||
and reloaded with fixed test data.
|
||||
</p>
|
||||
<p>
|
||||
Here are some things you might wish to try:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
View a
|
||||
<a href="http://fhirtest.uhn.ca/search?serverId=home&encoding=json&pretty=true&resource=Patient¶m.0.type=string¶m.0.name=_id¶m.0.0=&resource-search-limit=">list of patients</a>
|
||||
on this server.
|
||||
</li>
|
||||
<li>
|
||||
Construct a
|
||||
<a href="http://fhirtest.uhn.ca/resource?serverId=home&encoding=json&pretty=true&resource=Patient">search query</a>
|
||||
on this server.
|
||||
</li>
|
||||
<li>
|
||||
Access a
|
||||
<a href="http://fhirtest.uhn.ca/home?serverId=furore">different server</a>
|
||||
(use the <b>Server</b> menu at the top of the page to see a list of public FHIR servers)
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</html>
|
|
@ -127,7 +127,6 @@
|
|||
type="javaee:ejb-local-refType"
|
||||
minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
<xsd:group ref="javaee:service-refGroup"/>
|
||||
<xsd:element name="resource-ref"
|
||||
type="javaee:resource-refType"
|
||||
minOccurs="0"
|
||||
|
|
|
@ -23,12 +23,7 @@
|
|||
<!-- ** Default Home ** -->
|
||||
<!-- ********************************************************** -->
|
||||
|
||||
<div th:if="${requestUrl} == null">
|
||||
<div class="well">
|
||||
This is a RESTful server tester, which can be used to send
|
||||
requests to, and receive responses from the server at the
|
||||
following URL:
|
||||
</div>
|
||||
<div th:replace="tmpl-home-welcome :: banner"/>
|
||||
|
||||
<table class="table table-bordered table-striped" th:if="${resourceName.empty}">
|
||||
<colgroup>
|
||||
|
@ -179,8 +174,6 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -100,7 +100,7 @@
|
|||
controls for viewing/editing/etc results
|
||||
-->
|
||||
<div th:if="${bundle} != null" class="panel-group" id="accordion" style="margin-bottom: 0px;">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel panel-default" style="border: none; border-bottom: 1px solid #ddd; border-radius: 0px;">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<div th:fragment="banner" class="well">
|
||||
<div>
|
||||
This is a RESTful server tester, which can be used to send
|
||||
requests to, and receive responses from the server.
|
||||
</div>
|
||||
</html>
|
|
@ -133,6 +133,41 @@
|
|||
</configuration> <executions> <execution> <id>mojo-descriptor</id> <goals>
|
||||
<goal>descriptor</goal> </goals> </execution> </executions> </plugin> -->
|
||||
</plugins>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
|
||||
<plugin>
|
||||
<groupId>org.eclipse.m2e</groupId>
|
||||
<artifactId>lifecycle-mapping</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<configuration>
|
||||
<lifecycleMappingMetadata>
|
||||
<pluginExecutions>
|
||||
<pluginExecution>
|
||||
<pluginExecutionFilter>
|
||||
<groupId>
|
||||
org.apache.maven.plugins
|
||||
</groupId>
|
||||
<artifactId>
|
||||
maven-plugin-plugin
|
||||
</artifactId>
|
||||
<versionRange>
|
||||
[3.2,)
|
||||
</versionRange>
|
||||
<goals>
|
||||
<goal>descriptor</goal>
|
||||
</goals>
|
||||
</pluginExecutionFilter>
|
||||
<action>
|
||||
<ignore></ignore>
|
||||
</action>
|
||||
</pluginExecution>
|
||||
</pluginExecutions>
|
||||
</lifecycleMappingMetadata>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
|
|
|
@ -1,12 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="target/generated-sources/tinder"/>
|
||||
<classpathentry kind="src" path="src/test/resources"/>
|
||||
<classpathentry kind="src" path="src/test/java"/>
|
||||
<classpathentry including="**/*.java" kind="src" path="src/test/resources"/>
|
||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/hapi-fhir-base"/>
|
||||
<classpathentry kind="var" path="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar" sourcepath="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2-sources.jar"/>
|
||||
<classpathentry kind="var" path="M2_REPO/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar" sourcepath="M2_REPO/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0-sources.jar"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="var" path="M2_REPO/ca/uhn/hapi/fhir/hapi-fhir-base/1.0-SNAPSHOT/hapi-fhir-base-1.0-SNAPSHOT.jar"/>
|
||||
<classpathentry kind="var" path="M2_REPO/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar" sourcepath="M2_REPO/com/google/code/gson/gson/2.2.4/gson-2.2.4-sources.jar">
|
||||
<attributes>
|
||||
|
@ -43,5 +47,21 @@
|
|||
<attribute name="javadoc_location" value="jar:file:/Users/james/.m2/repository/junit/junit/4.11/junit-4.11-javadoc.jar!/"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
||||
|
|
|
@ -1,2 +1,4 @@
|
|||
eclipse.preferences.version=1
|
||||
encoding//src/test/java=UTF-8
|
||||
encoding//src/test/resources=UTF-8
|
||||
encoding/<project>=UTF-8
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#Mon Mar 03 17:20:36 EST 2014
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.source=1.7
|
||||
org.eclipse.jdt.core.compiler.compliance=1.7
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
||||
|
|
Loading…
Reference in New Issue