Test fixes
This commit is contained in:
2
pom.xml
2
pom.xml
@@ -11,7 +11,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>ca.uhn.hapi.fhir</groupId>
|
<groupId>ca.uhn.hapi.fhir</groupId>
|
||||||
<artifactId>hapi-fhir</artifactId>
|
<artifactId>hapi-fhir</artifactId>
|
||||||
<version>5.0.0-SNAPSHOT</version>
|
<version>5.0.0</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>hapi-fhir-jpaserver-starter</artifactId>
|
<artifactId>hapi-fhir-jpaserver-starter</artifactId>
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
package ca.uhn.fhir.jpa.starter;
|
package ca.uhn.fhir.jpa.starter;
|
||||||
|
|
||||||
import ca.uhn.fhir.context.FhirVersionEnum;
|
import ca.uhn.fhir.context.FhirVersionEnum;
|
||||||
|
import ca.uhn.fhir.jpa.subscription.channel.config.SubscriptionChannelConfig;
|
||||||
|
import ca.uhn.fhir.jpa.subscription.match.config.SubscriptionProcessorConfig;
|
||||||
|
import ca.uhn.fhir.jpa.subscription.match.config.WebsocketDispatcherConfig;
|
||||||
|
import ca.uhn.fhir.jpa.subscription.submit.config.SubscriptionSubmitterConfig;
|
||||||
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
|
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
|
||||||
|
|
||||||
public class ApplicationContext extends AnnotationConfigWebApplicationContext {
|
public class ApplicationContext extends AnnotationConfigWebApplicationContext {
|
||||||
@@ -20,7 +24,15 @@ public class ApplicationContext extends AnnotationConfigWebApplicationContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (HapiProperties.getSubscriptionWebsocketEnabled()) {
|
if (HapiProperties.getSubscriptionWebsocketEnabled()) {
|
||||||
register(ca.uhn.fhir.jpa.config.WebsocketDispatcherConfig.class);
|
register(WebsocketDispatcherConfig.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HapiProperties.getSubscriptionEmailEnabled()
|
||||||
|
|| HapiProperties.getSubscriptionRestHookEnabled()
|
||||||
|
|| HapiProperties.getSubscriptionWebsocketEnabled()) {
|
||||||
|
register(SubscriptionSubmitterConfig.class);
|
||||||
|
register(SubscriptionProcessorConfig.class);
|
||||||
|
register(SubscriptionChannelConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
package ca.uhn.fhir.jpa.starter;
|
package ca.uhn.fhir.jpa.starter;
|
||||||
|
|
||||||
|
import ca.uhn.fhir.jpa.api.config.DaoConfig;
|
||||||
import ca.uhn.fhir.jpa.binstore.DatabaseBlobBinaryStorageSvcImpl;
|
import ca.uhn.fhir.jpa.binstore.DatabaseBlobBinaryStorageSvcImpl;
|
||||||
import ca.uhn.fhir.jpa.binstore.IBinaryStorageSvc;
|
import ca.uhn.fhir.jpa.binstore.IBinaryStorageSvc;
|
||||||
import ca.uhn.fhir.jpa.dao.DaoConfig;
|
import ca.uhn.fhir.jpa.model.config.PartitionSettings;
|
||||||
import ca.uhn.fhir.jpa.model.entity.ModelConfig;
|
import ca.uhn.fhir.jpa.model.entity.ModelConfig;
|
||||||
import ca.uhn.fhir.jpa.subscription.module.channel.SubscriptionDeliveryHandlerFactory;
|
import ca.uhn.fhir.jpa.subscription.channel.subscription.SubscriptionDeliveryHandlerFactory;
|
||||||
import ca.uhn.fhir.jpa.subscription.module.subscriber.email.IEmailSender;
|
import ca.uhn.fhir.jpa.subscription.match.deliver.email.IEmailSender;
|
||||||
import ca.uhn.fhir.jpa.subscription.module.subscriber.email.JavaMailEmailSender;
|
import ca.uhn.fhir.jpa.subscription.match.deliver.email.JavaMailEmailSender;
|
||||||
import org.apache.commons.dbcp2.BasicDataSource;
|
import org.apache.commons.dbcp2.BasicDataSource;
|
||||||
import org.hl7.fhir.dstu2.model.Subscription;
|
import org.hl7.fhir.dstu2.model.Subscription;
|
||||||
|
import org.springframework.beans.factory.BeanFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
@@ -50,9 +52,8 @@ public class FhirServerConfigCommon {
|
|||||||
private Boolean emailStartTlsEnable = HapiProperties.getEmailStartTlsEnable();
|
private Boolean emailStartTlsEnable = HapiProperties.getEmailStartTlsEnable();
|
||||||
private Boolean emailStartTlsRequired = HapiProperties.getEmailStartTlsRequired();
|
private Boolean emailStartTlsRequired = HapiProperties.getEmailStartTlsRequired();
|
||||||
private Boolean emailQuitWait = HapiProperties.getEmailQuitWait();
|
private Boolean emailQuitWait = HapiProperties.getEmailQuitWait();
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SubscriptionDeliveryHandlerFactory mySubscriptionDeliveryHandlerFactory;
|
private ApplicationContext myAppCtx;
|
||||||
|
|
||||||
public FhirServerConfigCommon() {
|
public FhirServerConfigCommon() {
|
||||||
ourLog.info("Server configured to " + (this.allowContainsSearches ? "allow" : "deny") + " contains searches");
|
ourLog.info("Server configured to " + (this.allowContainsSearches ? "allow" : "deny") + " contains searches");
|
||||||
@@ -116,15 +117,15 @@ public class FhirServerConfigCommon {
|
|||||||
// Subscriptions are enabled by channel type
|
// Subscriptions are enabled by channel type
|
||||||
if (HapiProperties.getSubscriptionRestHookEnabled()) {
|
if (HapiProperties.getSubscriptionRestHookEnabled()) {
|
||||||
ourLog.info("Enabling REST-hook subscriptions");
|
ourLog.info("Enabling REST-hook subscriptions");
|
||||||
retVal.addSupportedSubscriptionType(Subscription.SubscriptionChannelType.RESTHOOK);
|
retVal.addSupportedSubscriptionType(org.hl7.fhir.dstu2.model.Subscription.SubscriptionChannelType.RESTHOOK);
|
||||||
}
|
}
|
||||||
if (HapiProperties.getSubscriptionEmailEnabled()) {
|
if (HapiProperties.getSubscriptionEmailEnabled()) {
|
||||||
ourLog.info("Enabling email subscriptions");
|
ourLog.info("Enabling email subscriptions");
|
||||||
retVal.addSupportedSubscriptionType(Subscription.SubscriptionChannelType.EMAIL);
|
retVal.addSupportedSubscriptionType(org.hl7.fhir.dstu2.model.Subscription.SubscriptionChannelType.EMAIL);
|
||||||
}
|
}
|
||||||
if (HapiProperties.getSubscriptionWebsocketEnabled()) {
|
if (HapiProperties.getSubscriptionWebsocketEnabled()) {
|
||||||
ourLog.info("Enabling websocket subscriptions");
|
ourLog.info("Enabling websocket subscriptions");
|
||||||
retVal.addSupportedSubscriptionType(Subscription.SubscriptionChannelType.WEBSOCKET);
|
retVal.addSupportedSubscriptionType(org.hl7.fhir.dstu2.model.Subscription.SubscriptionChannelType.WEBSOCKET);
|
||||||
}
|
}
|
||||||
|
|
||||||
retVal.setFilterParameterEnabled(HapiProperties.getFilterSearchEnabled());
|
retVal.setFilterParameterEnabled(HapiProperties.getFilterSearchEnabled());
|
||||||
@@ -132,6 +133,12 @@ public class FhirServerConfigCommon {
|
|||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public PartitionSettings partitionSettings() {
|
||||||
|
return new PartitionSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public ModelConfig modelConfig() {
|
public ModelConfig modelConfig() {
|
||||||
ModelConfig modelConfig = new ModelConfig();
|
ModelConfig modelConfig = new ModelConfig();
|
||||||
@@ -197,8 +204,9 @@ public class FhirServerConfigCommon {
|
|||||||
// retVal.setStartTlsRequired(this.emailStartTlsRequired);
|
// retVal.setStartTlsRequired(this.emailStartTlsRequired);
|
||||||
// retVal.setQuitWait(this.emailQuitWait);
|
// retVal.setQuitWait(this.emailQuitWait);
|
||||||
|
|
||||||
Validate.notNull(mySubscriptionDeliveryHandlerFactory, "No subscription delivery handler");
|
SubscriptionDeliveryHandlerFactory subscriptionDeliveryHandlerFactory = myAppCtx.getBean(SubscriptionDeliveryHandlerFactory.class);
|
||||||
mySubscriptionDeliveryHandlerFactory.setEmailSender(retVal);
|
Validate.notNull(subscriptionDeliveryHandlerFactory, "No subscription delivery handler");
|
||||||
|
subscriptionDeliveryHandlerFactory.setEmailSender(retVal);
|
||||||
|
|
||||||
|
|
||||||
return retVal;
|
return retVal;
|
||||||
|
|||||||
@@ -485,5 +485,9 @@ public class HapiProperties {
|
|||||||
public static boolean getBulkExportEnabled() {
|
public static boolean getBulkExportEnabled() {
|
||||||
return HapiProperties.getBooleanProperty(BULK_EXPORT_ENABLED, true);
|
return HapiProperties.getBooleanProperty(BULK_EXPORT_ENABLED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isFhirPathFilterInterceptorEnabled() {
|
||||||
|
return HapiProperties.getBooleanProperty("fhirpath_interceptor.enabled", false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,11 +4,12 @@ import ca.uhn.fhir.context.FhirContext;
|
|||||||
import ca.uhn.fhir.context.FhirVersionEnum;
|
import ca.uhn.fhir.context.FhirVersionEnum;
|
||||||
import ca.uhn.fhir.interceptor.api.IInterceptorBroadcaster;
|
import ca.uhn.fhir.interceptor.api.IInterceptorBroadcaster;
|
||||||
import ca.uhn.fhir.interceptor.api.IInterceptorService;
|
import ca.uhn.fhir.interceptor.api.IInterceptorService;
|
||||||
|
import ca.uhn.fhir.jpa.api.config.DaoConfig;
|
||||||
|
import ca.uhn.fhir.jpa.api.dao.DaoRegistry;
|
||||||
|
import ca.uhn.fhir.jpa.api.dao.IFhirSystemDao;
|
||||||
|
import ca.uhn.fhir.jpa.api.rp.ResourceProviderFactory;
|
||||||
import ca.uhn.fhir.jpa.binstore.BinaryStorageInterceptor;
|
import ca.uhn.fhir.jpa.binstore.BinaryStorageInterceptor;
|
||||||
import ca.uhn.fhir.jpa.bulk.BulkDataExportProvider;
|
import ca.uhn.fhir.jpa.bulk.BulkDataExportProvider;
|
||||||
import ca.uhn.fhir.jpa.dao.DaoConfig;
|
|
||||||
import ca.uhn.fhir.jpa.dao.DaoRegistry;
|
|
||||||
import ca.uhn.fhir.jpa.dao.IFhirSystemDao;
|
|
||||||
import ca.uhn.fhir.jpa.interceptor.CascadingDeleteInterceptor;
|
import ca.uhn.fhir.jpa.interceptor.CascadingDeleteInterceptor;
|
||||||
import ca.uhn.fhir.jpa.provider.GraphQLProvider;
|
import ca.uhn.fhir.jpa.provider.GraphQLProvider;
|
||||||
import ca.uhn.fhir.jpa.provider.JpaConformanceProviderDstu2;
|
import ca.uhn.fhir.jpa.provider.JpaConformanceProviderDstu2;
|
||||||
@@ -22,25 +23,23 @@ import ca.uhn.fhir.jpa.provider.r4.JpaSystemProviderR4;
|
|||||||
import ca.uhn.fhir.jpa.provider.r5.JpaConformanceProviderR5;
|
import ca.uhn.fhir.jpa.provider.r5.JpaConformanceProviderR5;
|
||||||
import ca.uhn.fhir.jpa.provider.r5.JpaSystemProviderR5;
|
import ca.uhn.fhir.jpa.provider.r5.JpaSystemProviderR5;
|
||||||
import ca.uhn.fhir.jpa.search.DatabaseBackedPagingProvider;
|
import ca.uhn.fhir.jpa.search.DatabaseBackedPagingProvider;
|
||||||
import ca.uhn.fhir.jpa.subscription.SubscriptionInterceptorLoader;
|
import ca.uhn.fhir.jpa.searchparam.registry.ISearchParamRegistry;
|
||||||
import ca.uhn.fhir.jpa.subscription.module.interceptor.SubscriptionDebugLogInterceptor;
|
import ca.uhn.fhir.jpa.subscription.util.SubscriptionDebugLogInterceptor;
|
||||||
import ca.uhn.fhir.jpa.util.ResourceProviderFactory;
|
|
||||||
import ca.uhn.fhir.model.dstu2.composite.MetaDt;
|
import ca.uhn.fhir.model.dstu2.composite.MetaDt;
|
||||||
import ca.uhn.fhir.narrative.DefaultThymeleafNarrativeGenerator;
|
import ca.uhn.fhir.narrative.DefaultThymeleafNarrativeGenerator;
|
||||||
import ca.uhn.fhir.rest.server.HardcodedServerAddressStrategy;
|
import ca.uhn.fhir.rest.server.HardcodedServerAddressStrategy;
|
||||||
import ca.uhn.fhir.rest.server.RestfulServer;
|
import ca.uhn.fhir.rest.server.RestfulServer;
|
||||||
import ca.uhn.fhir.rest.server.interceptor.CorsInterceptor;
|
import ca.uhn.fhir.rest.server.interceptor.CorsInterceptor;
|
||||||
|
import ca.uhn.fhir.rest.server.interceptor.FhirPathFilterInterceptor;
|
||||||
import ca.uhn.fhir.rest.server.interceptor.LoggingInterceptor;
|
import ca.uhn.fhir.rest.server.interceptor.LoggingInterceptor;
|
||||||
import ca.uhn.fhir.rest.server.interceptor.RequestValidatingInterceptor;
|
import ca.uhn.fhir.rest.server.interceptor.RequestValidatingInterceptor;
|
||||||
import ca.uhn.fhir.rest.server.interceptor.ResponseHighlighterInterceptor;
|
import ca.uhn.fhir.rest.server.interceptor.ResponseHighlighterInterceptor;
|
||||||
import ca.uhn.fhir.rest.server.interceptor.ResponseValidatingInterceptor;
|
import ca.uhn.fhir.rest.server.interceptor.ResponseValidatingInterceptor;
|
||||||
import ca.uhn.fhir.validation.IValidatorModule;
|
import ca.uhn.fhir.validation.IValidatorModule;
|
||||||
import ca.uhn.fhir.validation.ResultSeverityEnum;
|
import ca.uhn.fhir.validation.ResultSeverityEnum;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.TreeSet;
|
|
||||||
import org.hl7.fhir.dstu3.model.Bundle;
|
import org.hl7.fhir.dstu3.model.Bundle;
|
||||||
import org.hl7.fhir.r4.model.Bundle.BundleType;
|
|
||||||
import org.hl7.fhir.dstu3.model.Meta;
|
import org.hl7.fhir.dstu3.model.Meta;
|
||||||
|
import org.hl7.fhir.r4.model.Bundle.BundleType;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.web.cors.CorsConfiguration;
|
import org.springframework.web.cors.CorsConfiguration;
|
||||||
@@ -48,7 +47,9 @@ import org.springframework.web.cors.CorsConfiguration;
|
|||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.TreeSet;
|
||||||
|
|
||||||
public class JpaRestfulServer extends RestfulServer {
|
public class JpaRestfulServer extends RestfulServer {
|
||||||
|
|
||||||
@@ -112,37 +113,33 @@ public class JpaRestfulServer extends RestfulServer {
|
|||||||
* You can also create your own subclass of the conformance provider if you need to
|
* You can also create your own subclass of the conformance provider if you need to
|
||||||
* provide further customization of your server's CapabilityStatement
|
* provide further customization of your server's CapabilityStatement
|
||||||
*/
|
*/
|
||||||
|
DaoConfig daoConfig = appCtx.getBean(DaoConfig.class);
|
||||||
|
ISearchParamRegistry searchParamRegistry = appCtx.getBean(ISearchParamRegistry.class);
|
||||||
if (fhirVersion == FhirVersionEnum.DSTU2) {
|
if (fhirVersion == FhirVersionEnum.DSTU2) {
|
||||||
IFhirSystemDao<ca.uhn.fhir.model.dstu2.resource.Bundle, MetaDt> systemDao = appCtx
|
IFhirSystemDao<ca.uhn.fhir.model.dstu2.resource.Bundle, MetaDt> systemDao = appCtx.getBean("mySystemDaoDstu2", IFhirSystemDao.class);
|
||||||
.getBean("mySystemDaoDstu2", IFhirSystemDao.class);
|
JpaConformanceProviderDstu2 confProvider = new JpaConformanceProviderDstu2(this, systemDao, daoConfig);
|
||||||
JpaConformanceProviderDstu2 confProvider = new JpaConformanceProviderDstu2(this, systemDao,
|
|
||||||
appCtx.getBean(DaoConfig.class));
|
|
||||||
confProvider.setImplementationDescription("HAPI FHIR DSTU2 Server");
|
confProvider.setImplementationDescription("HAPI FHIR DSTU2 Server");
|
||||||
setServerConformanceProvider(confProvider);
|
setServerConformanceProvider(confProvider);
|
||||||
} else if (fhirVersion == FhirVersionEnum.DSTU3) {
|
} else {
|
||||||
IFhirSystemDao<Bundle, Meta> systemDao = appCtx
|
if (fhirVersion == FhirVersionEnum.DSTU3) {
|
||||||
.getBean("mySystemDaoDstu3", IFhirSystemDao.class);
|
IFhirSystemDao<Bundle, Meta> systemDao = appCtx.getBean("mySystemDaoDstu3", IFhirSystemDao.class);
|
||||||
JpaConformanceProviderDstu3 confProvider = new JpaConformanceProviderDstu3(this, systemDao,
|
JpaConformanceProviderDstu3 confProvider = new JpaConformanceProviderDstu3(this, systemDao, daoConfig, searchParamRegistry);
|
||||||
appCtx.getBean(DaoConfig.class));
|
|
||||||
confProvider.setImplementationDescription("HAPI FHIR DSTU3 Server");
|
confProvider.setImplementationDescription("HAPI FHIR DSTU3 Server");
|
||||||
setServerConformanceProvider(confProvider);
|
setServerConformanceProvider(confProvider);
|
||||||
} else if (fhirVersion == FhirVersionEnum.R4) {
|
} else if (fhirVersion == FhirVersionEnum.R4) {
|
||||||
IFhirSystemDao<org.hl7.fhir.r4.model.Bundle, org.hl7.fhir.r4.model.Meta> systemDao = appCtx
|
IFhirSystemDao<org.hl7.fhir.r4.model.Bundle, org.hl7.fhir.r4.model.Meta> systemDao = appCtx.getBean("mySystemDaoR4", IFhirSystemDao.class);
|
||||||
.getBean("mySystemDaoR4", IFhirSystemDao.class);
|
JpaConformanceProviderR4 confProvider = new JpaConformanceProviderR4(this, systemDao, daoConfig, searchParamRegistry);
|
||||||
JpaConformanceProviderR4 confProvider = new JpaConformanceProviderR4(this, systemDao,
|
|
||||||
appCtx.getBean(DaoConfig.class));
|
|
||||||
confProvider.setImplementationDescription("HAPI FHIR R4 Server");
|
confProvider.setImplementationDescription("HAPI FHIR R4 Server");
|
||||||
setServerConformanceProvider(confProvider);
|
setServerConformanceProvider(confProvider);
|
||||||
} else if (fhirVersion == FhirVersionEnum.R5) {
|
} else if (fhirVersion == FhirVersionEnum.R5) {
|
||||||
IFhirSystemDao<org.hl7.fhir.r5.model.Bundle, org.hl7.fhir.r5.model.Meta> systemDao = appCtx
|
IFhirSystemDao<org.hl7.fhir.r5.model.Bundle, org.hl7.fhir.r5.model.Meta> systemDao = appCtx.getBean("mySystemDaoR5", IFhirSystemDao.class);
|
||||||
.getBean("mySystemDaoR5", IFhirSystemDao.class);
|
JpaConformanceProviderR5 confProvider = new JpaConformanceProviderR5(this, systemDao, daoConfig, searchParamRegistry);
|
||||||
JpaConformanceProviderR5 confProvider = new JpaConformanceProviderR5(this, systemDao,
|
|
||||||
appCtx.getBean(DaoConfig.class));
|
|
||||||
confProvider.setImplementationDescription("HAPI FHIR R5 Server");
|
confProvider.setImplementationDescription("HAPI FHIR R5 Server");
|
||||||
setServerConformanceProvider(confProvider);
|
setServerConformanceProvider(confProvider);
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ETag Support
|
* ETag Support
|
||||||
@@ -179,9 +176,12 @@ public class JpaRestfulServer extends RestfulServer {
|
|||||||
* browser.
|
* browser.
|
||||||
*/
|
*/
|
||||||
ResponseHighlighterInterceptor responseHighlighterInterceptor = new ResponseHighlighterInterceptor();
|
ResponseHighlighterInterceptor responseHighlighterInterceptor = new ResponseHighlighterInterceptor();
|
||||||
;
|
|
||||||
this.registerInterceptor(responseHighlighterInterceptor);
|
this.registerInterceptor(responseHighlighterInterceptor);
|
||||||
|
|
||||||
|
if (HapiProperties.isFhirPathFilterInterceptorEnabled()) {
|
||||||
|
registerInterceptor(new FhirPathFilterInterceptor());
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add some logging for each request
|
* Add some logging for each request
|
||||||
*/
|
*/
|
||||||
@@ -257,12 +257,6 @@ public class JpaRestfulServer extends RestfulServer {
|
|||||||
if (HapiProperties.getSubscriptionWebsocketEnabled() ||
|
if (HapiProperties.getSubscriptionWebsocketEnabled() ||
|
||||||
HapiProperties.getSubscriptionEmailEnabled() ||
|
HapiProperties.getSubscriptionEmailEnabled() ||
|
||||||
HapiProperties.getSubscriptionRestHookEnabled()) {
|
HapiProperties.getSubscriptionRestHookEnabled()) {
|
||||||
// Loads subscription interceptors (SubscriptionActivatingInterceptor, SubscriptionMatcherInterceptor)
|
|
||||||
// with activation of scheduled subscription
|
|
||||||
SubscriptionInterceptorLoader subscriptionInterceptorLoader = appCtx
|
|
||||||
.getBean(SubscriptionInterceptorLoader.class);
|
|
||||||
subscriptionInterceptorLoader.registerInterceptors();
|
|
||||||
|
|
||||||
// Subscription debug logging
|
// Subscription debug logging
|
||||||
IInterceptorService interceptorService = appCtx.getBean(IInterceptorService.class);
|
IInterceptorService interceptorService = appCtx.getBean(IInterceptorService.class);
|
||||||
interceptorService.registerInterceptor(new SubscriptionDebugLogInterceptor());
|
interceptorService.registerInterceptor(new SubscriptionDebugLogInterceptor());
|
||||||
@@ -272,8 +266,7 @@ public class JpaRestfulServer extends RestfulServer {
|
|||||||
DaoRegistry daoRegistry = appCtx.getBean(DaoRegistry.class);
|
DaoRegistry daoRegistry = appCtx.getBean(DaoRegistry.class);
|
||||||
IInterceptorBroadcaster interceptorBroadcaster = appCtx.getBean(IInterceptorBroadcaster.class);
|
IInterceptorBroadcaster interceptorBroadcaster = appCtx.getBean(IInterceptorBroadcaster.class);
|
||||||
if (HapiProperties.getAllowCascadingDeletes()) {
|
if (HapiProperties.getAllowCascadingDeletes()) {
|
||||||
CascadingDeleteInterceptor cascadingDeleteInterceptor = new CascadingDeleteInterceptor(
|
CascadingDeleteInterceptor cascadingDeleteInterceptor = new CascadingDeleteInterceptor(ctx, daoRegistry, interceptorBroadcaster);
|
||||||
daoRegistry, interceptorBroadcaster);
|
|
||||||
getInterceptorService().registerInterceptor(cascadingDeleteInterceptor);
|
getInterceptorService().registerInterceptor(cascadingDeleteInterceptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -315,7 +308,7 @@ public class JpaRestfulServer extends RestfulServer {
|
|||||||
BundleType type = BundleType.valueOf(o);
|
BundleType type = BundleType.valueOf(o);
|
||||||
allowedBundleTypes.add(type.toCode());
|
allowedBundleTypes.add(type.toCode());
|
||||||
});
|
});
|
||||||
DaoConfig config = appCtx.getBean(DaoConfig.class);
|
DaoConfig config = (DaoConfig) daoConfig;
|
||||||
config.setBundleTypesAllowedForStorage(
|
config.setBundleTypesAllowedForStorage(
|
||||||
Collections.unmodifiableSet(new TreeSet<>(allowedBundleTypes)));
|
Collections.unmodifiableSet(new TreeSet<>(allowedBundleTypes)));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,6 +61,8 @@ validation.responses.enabled=false
|
|||||||
###################################################
|
###################################################
|
||||||
filter_search.enabled=true
|
filter_search.enabled=true
|
||||||
graphql.enabled=true
|
graphql.enabled=true
|
||||||
|
# See FhirPathFilterInterceptor
|
||||||
|
fhirpath_interceptor.enabled=false
|
||||||
|
|
||||||
###################################################
|
###################################################
|
||||||
# Supported Resources
|
# Supported Resources
|
||||||
|
|||||||
@@ -14,7 +14,12 @@ import org.eclipse.jetty.websocket.api.Session;
|
|||||||
import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;
|
import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;
|
||||||
import org.eclipse.jetty.websocket.client.WebSocketClient;
|
import org.eclipse.jetty.websocket.client.WebSocketClient;
|
||||||
import org.hl7.fhir.instance.model.api.IIdType;
|
import org.hl7.fhir.instance.model.api.IIdType;
|
||||||
import org.hl7.fhir.r5.model.*;
|
import org.hl7.fhir.r5.model.Bundle;
|
||||||
|
import org.hl7.fhir.r5.model.Enumerations;
|
||||||
|
import org.hl7.fhir.r5.model.Observation;
|
||||||
|
import org.hl7.fhir.r5.model.Patient;
|
||||||
|
import org.hl7.fhir.r5.model.Subscription;
|
||||||
|
import org.hl7.fhir.r5.model.SubscriptionTopic;
|
||||||
import org.junit.AfterClass;
|
import org.junit.AfterClass;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -62,7 +67,7 @@ public class ExampleServerR5IT {
|
|||||||
/*
|
/*
|
||||||
* Create topic
|
* Create topic
|
||||||
*/
|
*/
|
||||||
Topic topic = new Topic();
|
SubscriptionTopic topic = new SubscriptionTopic();
|
||||||
topic.getResourceTrigger().getQueryCriteria().setCurrent("Observation?status=final");
|
topic.getResourceTrigger().getQueryCriteria().setCurrent("Observation?status=final");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -71,14 +76,11 @@ public class ExampleServerR5IT {
|
|||||||
Subscription subscription = new Subscription();
|
Subscription subscription = new Subscription();
|
||||||
subscription.getTopic().setResource(topic);
|
subscription.getTopic().setResource(topic);
|
||||||
subscription.setReason("Monitor new neonatal function (note, age will be determined by the monitor)");
|
subscription.setReason("Monitor new neonatal function (note, age will be determined by the monitor)");
|
||||||
subscription.setStatus(Subscription.SubscriptionStatus.REQUESTED);
|
subscription.setStatus(Enumerations.SubscriptionState.REQUESTED);
|
||||||
|
subscription.getChannelType()
|
||||||
Subscription.SubscriptionChannelComponent channel = new Subscription.SubscriptionChannelComponent();
|
|
||||||
channel.getType().addCoding()
|
|
||||||
.setSystem("http://terminology.hl7.org/CodeSystem/subscription-channel-type")
|
.setSystem("http://terminology.hl7.org/CodeSystem/subscription-channel-type")
|
||||||
.setCode("websocket");
|
.setCode("websocket");
|
||||||
channel.getPayload().setContentType("application/json");
|
subscription.setContentType("application/json");
|
||||||
subscription.setChannel(channel);
|
|
||||||
|
|
||||||
MethodOutcome methodOutcome = ourClient.create().resource(subscription).execute();
|
MethodOutcome methodOutcome = ourClient.create().resource(subscription).execute();
|
||||||
IIdType mySubscriptionId = methodOutcome.getId();
|
IIdType mySubscriptionId = methodOutcome.getId();
|
||||||
|
|||||||
Reference in New Issue
Block a user