OHDSI Home | Forums | Wiki | Github

OLYMPUS - a unified launcher and configurator for OHDSI apps

OHDSI applications are rapidly growing in number and usefulness. But there is still a bit of a technical hurdle for those who are not familiar with building Java projects, setting up web servers, and stuff like that.

Enter OLYMPUS (props to @Patrick_Ryan for the greatest acronym ever-- OHDSI Loaded on Your Machines to Produce Ultimate Science). The vision of OLYMPUS is to create a runnable version of OHDSI that incorporates the WebAPI, several OHDSI web applications, and a configuration UI into a single runnable package (e.g., WAR).

Eventually OHDSI will probably need a full-on Docker environment to manage all the pieces (R, R-serve, apps, etc). OLYMPUS is a step before that, focusing on the WebAPI-based applications.

High-level details can be found on the Wiki and Github. We have begun work on the development and would be delighted for those interested to join our Tuesday morning calls. Please let me know if you’re interested.

Thanks,

Jon

Hi Jon,

Thanks for publishing this great deployment tool for OHDSI application, that would create big convenience for end users.

Also I have a question about the configuration setting of web service, in the example, the configuration is based on oracle database, so I wonder if you could provider an example based on other database, for example, SQL server, how to populate field “sid”? where can we input the domain information?

Thanks.
Min

Thanks for your note Min. You should be able to just leave SID blank for SQL Server. For Domain, do you mean with integrated security? Which of these example scenarios do you typically connect with?

Please let us know if you have problems connecting. We have good informaition on Oracle and Postgres, but need more data on SQL Server.

Thanks,

Jon

Thanks for your reply Jon, domain is for the windows security, actually we tested that configuration on Achilles and it
worked.

Here is the configuration information I tried:
SQL Dialect : SQL SERVER
Host Server: XXXXXX
Host Port: 1433
Username: domain\username
CDM Database Name / Schema: OMOPv5
Results Database Name / Schema: OMOPv5
Cohort Database Name / Schema: OMOPv5

And here is the error information:
WebAPI was not able to start up successfully, please check your configuration. (org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘CDMResultsService’: Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.transaction.support.TransactionTemplate org.ohdsi.webapi.service.AbstractDaoService.transactionTemplate; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘transactionTemplate’ defined in class path resource [org/ohdsi/webapi/DataAccessConfig.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.springframework.transaction.PlatformTransactionManager]: : Error creating bean with name ‘jpaTransactionManager’ defined in class path resource [org/ohdsi/webapi/DataAccessConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.transaction.PlatformTransactionManager]: Factory method ‘jpaTransactionManager’ threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘entityManagerFactory’ defined in class path resource [org/ohdsi/webapi/DataAccessConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method ‘entityManagerFactory’ threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when ‘hibernate.dialect’ not set; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘jpaTransactionManager’ defined in class path resource [org/ohdsi/webapi/DataAccessConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.transaction.PlatformTransactionManager]: Factory method ‘jpaTransactionManager’ threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘entityManagerFactory’ defined in class path resource [org/ohdsi/webapi/DataAccessConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method ‘entityManagerFactory’ threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when ‘hibernate.dialect’ not set)

Thanks Min. That is very helpful. We will analyze the error and get back
with you. We may need to make some tweaks to our connection string pattern
for sql server.

Hi Min,

This exception looks like the product of not being able to connect to the datasource. However, the actual “root cause” is not shown in your log snippet (should be above the error message you included). Can you include the entire log (starting Olympus + starting WebAPI)? I’m interested in the log statements that have the property values (like below after starting Olympus)? Since I was not aware of the potential to include ‘domain\username’, it is possible that the ‘’ is being excluded (special escape character in java). The property value should look correct (when logged) but I wonder if the driver doesn’t like it. I might also try the user = domain\\username as well as user = ‘username’ (omitting the domain).
If you could capture the entire log for each run that would be great. Note that due to a known issue, every time you try to start WebAPI (within Olympus) and run into an error, you will need to capture the log, then change/save any properties, and finally restart Olympus & WebAPI.
An option for you, should you want to start WebAPI at the time you start Olympus, you can add the following arguement to the java process. -Dolympus.webapi.launch.enabled=true

2015-04-28 16:02:52.700 INFO main org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainer -  - Jetty started on port(s) 20000 (http/1.1)
2015-04-28 16:02:52.798 DEBUG main org.ohdsi.olympus.model.WebApiService -  - Property [datasource.driverClassName,oracle.jdbc.OracleDriver]
2015-04-28 16:02:52.798 DEBUG main org.ohdsi.olympus.model.WebApiService -  - Property [datasource.url,jdbc:oracle:thin:@172.31.80.28:1521:i2b2idp]
2015-04-28 16:02:52.798 DEBUG main org.ohdsi.olympus.model.WebApiService -  - Property [datasource.username,OHDSI]
2015-04-28 16:02:52.798 DEBUG main org.ohdsi.olympus.model.WebApiService -  - Property [datasource.password,***]
2015-04-28 16:02:52.798 DEBUG main org.ohdsi.olympus.model.WebApiService -  - Property [flyway.datasource.driverClassName,oracle.jdbc.OracleDriver]
2015-04-28 16:02:52.798 DEBUG main org.ohdsi.olympus.model.WebApiService -  - Property [flyway.datasource.url,jdbc:oracle:thin:@172.31.80.28:1521:i2b2idp]
2015-04-28 16:02:52.799 DEBUG main org.ohdsi.olympus.model.WebApiService -  - Property [flyway.datasource.username,OHDSI]
2015-04-28 16:02:52.799 DEBUG main org.ohdsi.olympus.model.WebApiService -  - Property [flyway.datasource.password,***]
2015-04-28 16:02:52.799 DEBUG main org.ohdsi.olympus.model.WebApiService -  - Property [flyway.schemas,OHDSI]
2015-04-28 16:02:52.799 DEBUG main org.ohdsi.olympus.model.WebApiService -  - Property [flyway.locations,classpath:db/migration/oracle]
2015-04-28 16:02:52.799 DEBUG main org.ohdsi.olympus.model.WebApiService -  - Property [datasource.dialect,oracle]
2015-04-28 16:02:52.799 DEBUG main org.ohdsi.olympus.model.WebApiService -  - Property [datasource.cdm.schema,omopv5_de]
2015-04-28 16:02:52.799 DEBUG main org.ohdsi.olympus.model.WebApiService -  - Property [datasource.ohdsi.schema,OHDSI]
2015-04-28 16:02:52.799 DEBUG main org.ohdsi.olympus.model.WebApiService -  - Property [datasource.cohort.schema,OHDSI]
2015-04-28 16:02:52.810 INFO main org.ohdsi.olympus.model.WebApiService -  - Not setting key[achilles.data.dir] due to null key or value
2015-04-28 16:02:52.810 WARN main org.ohdsi.olympus.model.WebApiService -  - WebApi launch disabled.
2015-04-28 16:02:52.811 INFO main org.ohdsi.olympus.Olympus -  - Started Olympus in 8.892 seconds (JVM running for 10.074) 

Min,

If you get a chance, can you try to start the WebAPI one more time and copy all the log information from your terminal / command prompt. You can send via email if preferred. Let me know.

Thanks,

Jon

Hi Jon,

Thanks for your reply.
I sent you an email (jonduke@regenstrief.org) including the entire log, please let me know if you did not receive it.

Thanks.
Min

Thanks Min. I received it and will review with Alex and get back with you
shortly.

Thanks!

Jon

Was Min’s issue ever fixed? I am having trouble connecting to SQL Server as well. The error varies, sometimes it is similar to Min’s, but now the error is:

WebAPI was not able to start up successfully, please check your configuration. (org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘flyway’ defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Unable to create schema [VINCI_OMOP_V5])

I’m using a local SQL Server DB account to connect. What permissions does this user need against the associated DB? Is there anything else I can look at?

Thanks
Grant

Hi Grant,

It looks like your database is successfully connecting but that you don’t have permissions to create new schema.

@alfranke, if the schema already exists (I’m assuming Grant’s VINCI_OMOP_V5 schema already does), does flyway have to try to create a new schema? What are the specific permissions the user needs to have on the OLYMPUS schemas?

Jon

Hi @jon_duke ,

I have some troubles with configure OLYMPUS.
Have any solutions?

This is the error message. simillar with Min’s one

WebAPI was not able to start up successfully, please check your configuration. (org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘CDMResultsService’: Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.transaction.support.TransactionTemplate org.ohdsi.webapi.service.AbstractDaoService.transactionTemplate; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘transactionTemplate’ defined in class path resource [org/ohdsi/webapi/DataAccessConfig.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.springframework.transaction.PlatformTransactionManager]: : Error creating bean with name ‘jpaTransactionManager’ defined in class path resource [org/ohdsi/webapi/DataAccessConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.transaction.PlatformTransactionManager]: Factory method ‘jpaTransactionManager’ threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘entityManagerFactory’ defined in class path resource [org/ohdsi/webapi/DataAccessConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method ‘entityManagerFactory’ threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when ‘hibernate.dialect’ not set; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘jpaTransactionManager’ defined in class path resource [org/ohdsi/webapi/DataAccessConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.transaction.PlatformTransactionManager]: Factory method ‘jpaTransactionManager’ threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘entityManagerFactory’ defined in class path resource [org/ohdsi/webapi/DataAccessConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method ‘entityManagerFactory’ threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when ‘hibernate.dialect’ not set)

Likely a database connectivity problem. The log snippet does not include root cause (would have been earlier in the log).

Can you post your configuration and the tables in those schemas?

I have solved this troubles.
Thanks for attention!

t