Add example for terminology uiploading
This commit is contained in:
parent
0b69367b11
commit
f6601cc347
|
@ -301,7 +301,7 @@ public class RestfulServer extends HttpServlet implements IRestfulServer<Servlet
|
|||
return theServletPath.length() + delta;
|
||||
}
|
||||
|
||||
private void findResourceMethods(Object theProvider) throws Exception {
|
||||
private void findResourceMethods(Object theProvider) {
|
||||
|
||||
ourLog.info("Scanning type for RESTful methods: {}", theProvider.getClass());
|
||||
int count = 0;
|
||||
|
@ -1017,11 +1017,8 @@ public class RestfulServer extends HttpServlet implements IRestfulServer<Servlet
|
|||
/**
|
||||
* Register a single provider. This could be a Resource Provider or a "plain" provider not associated with any
|
||||
* resource.
|
||||
*
|
||||
* @param provider
|
||||
* @throws Exception
|
||||
*/
|
||||
public void registerProvider(Object provider) throws Exception {
|
||||
public void registerProvider(Object provider) {
|
||||
if (provider != null) {
|
||||
Collection<Object> providerList = new ArrayList<Object>(1);
|
||||
providerList.add(provider);
|
||||
|
@ -1034,9 +1031,8 @@ public class RestfulServer extends HttpServlet implements IRestfulServer<Servlet
|
|||
*
|
||||
* @param providers
|
||||
* a {@code Collection} of providers. The parameter could be null or an empty {@code Collection}
|
||||
* @throws Exception
|
||||
*/
|
||||
public void registerProviders(Collection<? extends Object> providers) throws Exception {
|
||||
public void registerProviders(Collection<? extends Object> providers) {
|
||||
myProviderRegistrationMutex.lock();
|
||||
try {
|
||||
if (!myStarted) {
|
||||
|
@ -1059,7 +1055,7 @@ public class RestfulServer extends HttpServlet implements IRestfulServer<Servlet
|
|||
/*
|
||||
* Inner method to actually register providers
|
||||
*/
|
||||
protected void registerProviders(Collection<? extends Object> providers, boolean inInit) throws Exception {
|
||||
protected void registerProviders(Collection<? extends Object> providers, boolean inInit) {
|
||||
List<IResourceProvider> newResourceProviders = new ArrayList<IResourceProvider>();
|
||||
List<Object> newPlainProviders = new ArrayList<Object>();
|
||||
ProvidedResourceScanner providedResourceScanner = new ProvidedResourceScanner(getFhirContext());
|
||||
|
@ -1074,7 +1070,7 @@ public class RestfulServer extends HttpServlet implements IRestfulServer<Servlet
|
|||
}
|
||||
String resourceName = getFhirContext().getResourceDefinition(resourceType).getName();
|
||||
if (myTypeToProvider.containsKey(resourceName)) {
|
||||
throw new ServletException("Multiple resource providers return resource type[" + resourceName + "]: First[" + myTypeToProvider.get(resourceName).getClass().getCanonicalName() + "] and Second[" + rsrcProvider.getClass().getCanonicalName() + "]");
|
||||
throw new ConfigurationException("Multiple resource providers return resource type[" + resourceName + "]: First[" + myTypeToProvider.get(resourceName).getClass().getCanonicalName() + "] and Second[" + rsrcProvider.getClass().getCanonicalName() + "]");
|
||||
}
|
||||
if (!inInit) {
|
||||
myResourceProviders.add(rsrcProvider);
|
||||
|
|
|
@ -19,6 +19,7 @@ import ca.uhn.fhir.jpa.provider.JpaSystemProviderDstu1;
|
|||
import ca.uhn.fhir.jpa.provider.JpaSystemProviderDstu2;
|
||||
import ca.uhn.fhir.jpa.provider.dstu3.JpaConformanceProviderDstu3;
|
||||
import ca.uhn.fhir.jpa.provider.dstu3.JpaSystemProviderDstu3;
|
||||
import ca.uhn.fhir.jpa.provider.dstu3.TerminologyUploaderProviderDstu3;
|
||||
import ca.uhn.fhir.jpa.search.DatabaseBackedPagingProvider;
|
||||
import ca.uhn.fhir.model.api.IResource;
|
||||
import ca.uhn.fhir.model.dstu2.composite.MetaDt;
|
||||
|
@ -93,8 +94,7 @@ public class JpaServerDemo extends RestfulServer {
|
|||
* is a nice addition.
|
||||
*/
|
||||
if (fhirVersion == FhirVersionEnum.DSTU1) {
|
||||
IFhirSystemDao<List<IResource>, MetaDt> systemDao = myAppCtx.getBean("mySystemDaoDstu1",
|
||||
IFhirSystemDao.class);
|
||||
IFhirSystemDao<List<IResource>, MetaDt> systemDao = myAppCtx.getBean("mySystemDaoDstu1", IFhirSystemDao.class);
|
||||
JpaConformanceProviderDstu1 confProvider = new JpaConformanceProviderDstu1(this, systemDao);
|
||||
confProvider.setImplementationDescription("Example Server");
|
||||
setServerConformanceProvider(confProvider);
|
||||
|
@ -105,8 +105,7 @@ public class JpaServerDemo extends RestfulServer {
|
|||
confProvider.setImplementationDescription("Example Server");
|
||||
setServerConformanceProvider(confProvider);
|
||||
} else if (fhirVersion == FhirVersionEnum.DSTU3) {
|
||||
IFhirSystemDao<org.hl7.fhir.dstu3.model.Bundle, Meta> systemDao = myAppCtx
|
||||
.getBean("mySystemDaoDstu3", IFhirSystemDao.class);
|
||||
IFhirSystemDao<org.hl7.fhir.dstu3.model.Bundle, Meta> systemDao = myAppCtx.getBean("mySystemDaoDstu3", IFhirSystemDao.class);
|
||||
JpaConformanceProviderDstu3 confProvider = new JpaConformanceProviderDstu3(this, systemDao,
|
||||
myAppCtx.getBean(DaoConfig.class));
|
||||
confProvider.setImplementationDescription("Example Server");
|
||||
|
@ -135,7 +134,9 @@ public class JpaServerDemo extends RestfulServer {
|
|||
/*
|
||||
* -- New in HAPI FHIR 1.5 --
|
||||
* This configures the server to page search results to and from
|
||||
* the database
|
||||
* the database, instead of only paging them to memory. This may mean
|
||||
* a performance hit when performing searches that return lots of results,
|
||||
* but makes the server much more scalable.
|
||||
*/
|
||||
setPagingProvider(myAppCtx.getBean(DatabaseBackedPagingProvider.class));
|
||||
|
||||
|
@ -155,6 +156,16 @@ public class JpaServerDemo extends RestfulServer {
|
|||
*/
|
||||
//setServerAddressStrategy(new HardcodedServerAddressStrategy("http://mydomain.com/fhir/baseDstu2"));
|
||||
|
||||
/*
|
||||
* If you are using DSTU3+, you may want to add a terminology uploader, which allows
|
||||
* uploading of external terminologies such as Snomed CT. Note that this uploader
|
||||
* does not have any security attached (any anonymous user may use it by default)
|
||||
* so it is a potential security vulnerability. Consider using an AuthorizationInterceptor
|
||||
* with this feature.
|
||||
*/
|
||||
if (fhirVersion == FhirVersionEnum.DSTU3) {
|
||||
registerProvider(myAppCtx.getBean(TerminologyUploaderProviderDstu3.class));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -7,6 +7,29 @@
|
|||
</properties>
|
||||
<body>
|
||||
<release version="2.0" date="TBD">
|
||||
<action type="fix">
|
||||
JSON parsing in HAPI FHIR has been switched from using JSR353 (javax.json) to
|
||||
using Google Gson. For this reason we are bumping the major release number to
|
||||
2.0. Theoretically this should not affect projects in any major way, but Gson
|
||||
does have subtle differences. Two differences which popped up a fair bit in
|
||||
our own testing:
|
||||
<![CDATA[
|
||||
<ul>
|
||||
<ul>
|
||||
A space is placed after the : in keys, e.g. what was previously
|
||||
encoded as <code>"resourceType":"Patient"</code> is now encoded
|
||||
as <code>"resourceType": "Patient"</code> (this broke a number of
|
||||
our unit tests with hardcoded resource definitions)
|
||||
</ul>
|
||||
<ul>
|
||||
Trailing content after a valid json resource is rejected by
|
||||
Gson (it was ignored by the Glassfish parser we were previously
|
||||
using even though it was invalid)
|
||||
</ul>
|
||||
|
||||
</ul>
|
||||
]]>
|
||||
</action>
|
||||
<action type="fix">
|
||||
Fix issue in DSTU1 Bundle parsing where unexpected elements in the bundle resulted in a failure
|
||||
to parse.
|
||||
|
|
Loading…
Reference in New Issue