GSoC 2017 Operation Theater Module Workflow Enhancements

Hi every one!

I am K.Suthagar who is studying at Department of Computer Science and Engineering, Faculty of Engineering, University of Moratuwa. An aspiring young entrepreneur with good leadership skills and quick learning abilities. Simultaneously I am doing some non-academic projects at my startup Inncaps. I am also involved in Open Source Developments.

Here, I am contacting you about the Google Summer of Code Projects 2017, When I come across the Google Summer of Code 2017 Project Ideas, I found some great projects at OpenMRS Page. The technologies and ideas is most familiar with me for the further developments. I contributed most of the projects using that mentioned technologies. I would like to know some more details about this following Project idea to think some more about that.

I would like to work for Operation Theater Module Workflow Enhancements Project. I would like to clarify about this before the proposal preparation.

The main goal is to complete the workflow data capturing part along with scheduling to complete the OT module. So we need to create a platform for the data capturing and should verify before the completion.

Initially I would discuss about the pre-theater activities . a. Here we don’t need to take all the data from initial steps, because most of the patient data was entered to the OpenMRS platform during the admission. In my view, we just to want to collect some data like Past Surgery Histories, allergies, Medicine controls, Current Drug level in the body, and Body condition before the Surgery.

b. We need to get the Digital certificate about the surgery confirmation. To get the the surgery confirmation from patient or relations, we should implement a platform to take the identity data. And system should keep the capability to generate a hard copy with Patient details and Surgery plan to get the manual signature before the Surgery. It may help Hospitals for the legal issues from the surgeries failures and problems.

c. We want to develop platform to define the Surgery plan for the patient before the surgery. For this, we can’t ask the medical officer to enter whole data about the surgery for every patients. We can pre define all the Surgery details with some support data and then ask the medical officer to select some surgery category(surgery package) according to the patient situation. Then we can ask some parameters or relevant short details to full fill the Surgery plan. Here we want to develop a platform for the pre-define surgery details and making selection and modification before the surgery.

d. Here we can define some validations for the surgery. then we can notify the medical officer about some critical situations before the surgery. E.g :

  1. For some allergies, patient can’t involve the particular surgery.
  2. For some entered body conditions, patient can’t face the particular surgery immediately.
  3. For the medicine control, Patient may not take the particular medicine after the surgery, So System should indicate like this problems before the surgery to the medical officer.

I would like to discuss about the in-theater activities and post-theater activities also. I need to confirm this areas and ideas to prepare the proposal for this Project. I kindly request you to give me some guidance to develop this project in larger scale. @akshika47 this is kindly for your concern :slight_smile:. Thank you

1 Like

I would like to have some discussion with the well known surgeon who works at Teaching Hospital during this weekend to get some work flow about the Operation theaters. So I can get some more ideas about that and can able to develop some ideas in larger scale.

I would like to discuss about following matters during the disscussion,

  1. Pre requirements and actions which is needed before the surgery
  2. How they maintain and marking the relevant data during the surgery?
  3. Are the taking all the activities for the patient which was done during the surgery or just the common document for the surgery?
  4. What the forms and documents, they are using for the surgery management.
  5. How they maintain the records after the surgery.

It will be an initial identification of the operations theater data management process to think more about the project.

Can you give me some ideas or tips for the discussion? I will collect some data form from them, Will it use full to develop the data collection platform for our project? @akshika47 I would like to get your idea? :slight_smile:.

1 Like

@suthagar23 This is great work. By the way part of the module has been done in 2014 GSOC (https://wiki.openmrs.org/display/projects/Operation+Theater+Module). First phase is to migrate that. After that we can move forward with the proposal I also would like to advice you to become dev/1

2 Likes

@akshika47 Surely, I am working on the target and doing some works related to reach that :slight_smile:. I have viewed about 2014 GSoC parts for this project. Now, I am busy with installing and configuring Open MRS to my environment.

1 Like

@akshika47 I have successfully deployed Open MRS with my environment :slight_smile: Thanks for the guidance!

When I am configuring IntelliJ IDEA for Open MRS, I got an error. So I would like to create a issue, but Issure page is not allowed to create issues using Open MRS ID, then I created a new case and send that to Open MRS. Is it correct? Trying to reach dev/1 :grinning:

1 Like

what is the issue that your are getting?

1 Like

I have updated my IntelliJ IDEA (2017) and then try to configure Coder Style using templates.xml file. but last time(older version), I got success. but for the new version, I couldn’t import the templates.xml file to the Coder Style. It shows me this following error message,

I think, the template.xml file should contain this tag for the new version.

Hello @akshika47,

I am Chanuka Wijayakoon, also from University of Moratuwa, CSE department. I’ve been getting familiar with OpenMRS for some time now, and am also interested in working on the Operation Theatre Module Workflow Enhancements project. I’ve developed EMR Management systems as commercial projects before, and as such have a general idea of workflows involved in medical systems. My work has gained me experience in web development and I’m quite familiar with Java and related technologies.

The OT module project has been developed during a transition period from the single OpenMRS package to the separate, OpenMRS EMR (web-based) system and Platform. As such, the latest platforms (version 1.10 and higher) have dependency conflicts with the OT module. I am trying to set it up using older platform versions, comparing their release dates with the previous project time frame. If you have any tips on this, I’d be grateful to hear them. :slight_smile: Is there a specific platform or Reference Application version that you’d like me to try?

I have worked with latest Reference Application and platform versions and achieved /dev/1. Currently in the process of testing out the current functionality of OT module and working out a migration plan.

1 Like

I have found the necessary dependencies for the OT module but an error comes up when I start the OT module.

pastebin: http://pastebin.com/Y1cu99y6

Looking at the console output, I believe many more bean creations are failing. They are mostly of the following form.

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Injection of autowired dependencies failed; nested exception is ... nested exception is java.lang.ClassNotFoundException: org.openmrs.module.operationtheater.uiframework.converter.StringToProcedureConverter.

Here’ a longer portion of the console output: http://pastebin.com/VeEemETc

What I did:

  1. Start server with correct platform version.
  2. Add necessary modules via the web interface (not manually copying) and start them.
  3. Add OT module.
  4. Start OT module.

It seems creating a new module based on the old OT module would be easier. I’d like to hear your thoughts on this :slight_smile:

1 Like

Hi all, I am Yasara Dissanayake, from University of Moratuwa, Computer Science and Engineering department. I’ve been getting familiar with OpenMRS for some time now and currently I have configured all other modules and now system is in working state. I am interested in working on the Operation Theatre Module Workflow Enhancements project and while I’m trying to install operation theater module I got following error at startup. The following error occurred at startup: Unable to start OpenMRS. Error thrown was: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘messageSourceServiceTarget’ defined in class path resource [applicationContext-service.xml]: Cannot resolve reference to bean ‘mutableResourceBundleMessageSource’ while setting bean property ‘activeMessageSource’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘mutableResourceBundleMessageSource’ defined in class path resource [applicationContext-service.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException:
 Related cause: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘userService’ defined in class path resource [applicationContext-service.xml]: Cannot resolve reference to bean ‘userServiceTarget’ while setting bean property ‘target’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘userServiceTarget’ defined in class path resource [applicationContext-service.xml]: Cannot resolve reference to bean ‘userDAO’ while setting bean property ‘userDAO’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘userDAO’ defined in class path resource [applicationContext-service.xml]: Cannot resolve reference to bean ‘sessionFactory’ while setting bean property ‘sessionFactory’; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name ‘sessionFactory’: FactoryBean which is currently in creation returned null from getObject _ at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)_ _ at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1469)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)_ _ at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)_ _ at org.springframework.context.support.AbstractApplicationContext.initMessageSource(AbstractApplicationContext.java:625)_ _ at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:468)_ _ at org.openmrs.module.ModuleUtil.refreshApplicationContext(ModuleUtil.java:894)_ _ at org.openmrs.module.web.WebModuleUtil.refreshWAC(WebModuleUtil.java:866)_ _ at org.openmrs.web.Listener.performWebStartOfModules(Listener.java:659)_ _ at org.openmrs.web.Listener.performWebStartOfModules(Listener.java:638)_ _ at org.openmrs.web.Listener.startOpenmrs(Listener.java:266)_ _ 
 1 more_ Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘mutableResourceBundleMessageSource’ defined in class path resource [applicationContext-service.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor#0’ defined in class path resource [applicationContext-service.xml]: Cannot resolve reference to bean ‘transactionInterceptor’ while setting bean property ‘transactionInterceptor’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘transactionInterceptor’ defined in class path resource [applicationContext-service.xml]: Cannot resolve reference to bean ‘transactionManager’ while setting bean property ‘transactionManager’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘transactionManager’ defined in class path resource [applicationContext-service.xml]: Cannot resolve reference to bean ‘sessionFactory’ while setting bean property ‘sessionFactory’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘sessionFactory’ defined in class path resource [applicationContext-service.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.collection.OneToManyPersister _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)_ _ at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)_ _ at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)_ _ 
 17 more_ Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor#0’ defined in class path resource [applicationContext-service.xml]: Cannot resolve reference to bean ‘transactionInterceptor’ while setting bean property ‘transactionInterceptor’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘transactionInterceptor’ defined in class path resource [applicationContext-service.xml]: Cannot resolve reference to bean ‘transactionManager’ while setting bean property ‘transactionManager’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘transactionManager’ defined in class path resource [applicationContext-service.xml]: Cannot resolve reference to bean ‘sessionFactory’ while setting bean property ‘sessionFactory’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘sessionFactory’ defined in class path resource [applicationContext-service.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.collection.OneToManyPersister _ at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)_ _ at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1469)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)_ _ at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)_ _ at org.springframework.aop.framework.autoproxy.BeanFactoryAdvisorRetrievalHelper.findAdvisorBeans(BeanFactoryAdvisorRetrievalHelper.java:92)_ _ at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findCandidateAdvisors(AbstractAdvisorAutoProxyCreator.java:101)_ _ at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:87)_ _ at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:69)_ _ at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:330)_ _ at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:293)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:422)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1571)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)_ _ 
 23 more_ Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘transactionInterceptor’ defined in class path resource [applicationContext-service.xml]: Cannot resolve reference to bean ‘transactionManager’ while setting bean property ‘transactionManager’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘transactionManager’ defined in class path resource [applicationContext-service.xml]: Cannot resolve reference to bean ‘sessionFactory’ while setting bean property ‘sessionFactory’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘sessionFactory’ defined in class path resource [applicationContext-service.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.collection.OneToManyPersister _ at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)_ _ at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1469)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)_ _ at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)_ _ at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)_ _ 
 41 more_ Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘transactionManager’ defined in class path resource [applicationContext-service.xml]: Cannot resolve reference to bean ‘sessionFactory’ while setting bean property ‘sessionFactory’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘sessionFactory’ defined in class path resource [applicationContext-service.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.collection.OneToManyPersister _ at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)_ _ at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1469)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)_ _ at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)_ _ at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)_ _ 
 51 more_ Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘sessionFactory’ defined in class path resource [applicationContext-service.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.collection.OneToManyPersister _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)_ _ at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)_ _ at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)_ _ at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)_ _ 
 61 more_ Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.collection.OneToManyPersister _ at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:253)_ _ at org.hibernate.persister.internal.PersisterFactoryImpl.createCollectionPersister(PersisterFactoryImpl.java:201)_ _ at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:430)_ _ at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1859)_ _ at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1930)_ _ at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:372)_ _ at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:454)_ _ at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:439)_ _ at org.openmrs.api.db.hibernate.HibernateSessionFactoryBean.afterPropertiesSet(HibernateSessionFactoryBean.java:188)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1625)_ _ at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562)_ _ 
 68 more_ Caused by: org.hibernate.HibernateException: Unable to parse order-by fragment _ at org.hibernate.sql.ordering.antlr.OrderByFragmentTranslator.translate(OrderByFragmentTranslator.java:69)_ _ at org.hibernate.sql.Template.translateOrderBy(Template.java:728)_ _ at org.hibernate.persister.collection.AbstractCollectionPersister.(AbstractCollectionPersister.java:578)_ _ at org.hibernate.persister.collection.OneToManyPersister.(OneToManyPersister.java:89)_ _ at sun.reflect.GeneratedConstructorAccessor57.newInstance(Unknown Source)_ _ at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)_ _ at java.lang.reflect.Constructor.newInstance(Constructor.java:423)_ _ at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:231)_ _ 
 78 more_ Caused by: java.lang.ClassCastException: antlr.CommonToken cannot be cast to antlr.Token _ at antlr.CharScanner.makeToken(CharScanner.java:173)_ _ at org.hibernate.sql.ordering.antlr.GeneratedOrderByLexer.mIDENT(GeneratedOrderByLexer.java:239)_ _ at org.hibernate.sql.ordering.antlr.GeneratedOrderByLexer.nextToken(GeneratedOrderByLexer.java:139)_ _ at antlr.TokenBuffer.fill(TokenBuffer.java:69)_ _ at antlr.TokenBuffer.LA(TokenBuffer.java:80)_ _ at antlr.LLkParser.LA(LLkParser.java:52)_ _ at org.hibernate.sql.ordering.antlr.GeneratedOrderByFragmentParser.expression(GeneratedOrderByFragmentParser.java:565)_ _ at org.hibernate.sql.ordering.antlr.GeneratedOrderByFragmentParser.sortKey(GeneratedOrderByFragmentParser.java:346)_ _ at org.hibernate.sql.ordering.antlr.GeneratedOrderByFragmentParser.sortSpecification(GeneratedOrderByFragmentParser.java:241)_ _ at org.hibernate.sql.ordering.antlr.GeneratedOrderByFragmentParser.orderByFragment(GeneratedOrderByFragmentParser.java:190)_ _ at org.hibernate.sql.ordering.antlr.OrderByFragmentTranslator.translate(OrderByFragmentTranslator.java:63)_ _ 
 85 more_

Hi @akshika47, @harsha89
I am Yasara Dissanayake, from University of Moratuwa, Computer Science and Engineering department. I’ve been getting familiar with OpenMRS for some time now and currently I have configured all other modules and now system is in working state. I am interested in working on the Operation Theatre Module Workflow Enhancements project and while I’m trying to install operation theater module I got following error at startup.

Unable to start OpenMRS. Error thrown was: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘messageSourceServiceTarget’ defined in class path resource [applicationContext-service.xml]: Cannot resolve reference to bean ‘mutableResourceBundleMessageSource’ while setting bean property ‘activeMessageSource’


; It looks like have to update OT to new platform. Please guide me. :slight_smile:

@ayd are you trying to install the latest build from the master branch in tomcat container? Please try again deleting .OpenMRS directory and openmrs database.

hi @harsha89 I used jettey server and used the latest build which is in current github and after deleting file and re-installed when starting the coreapps-1.12.1 I got following errors because of that OT module also no working. Do you have any idea on what went wrong here :slight_smile: ?

ModuleFactory.startModuleInternal(829) |2017-03-28 20:03:21,024| Error while trying to start module: coreapps org.openmrs.module.ModuleException: Unable to load/find moduleActivator: ‘org.openmrs.module.coreapps.CoreAppsActivator’ Module: Core Apps Module ** at org.openmrs.module.Module.getModuleActivator(Module.java:174)** ** at org.openmrs.module.ModuleFactory.startModuleInternal(ModuleFactory.java:811)** ** at org.openmrs.api.context.Daemon$1.run(Daemon.java:74)** Caused by: java.lang.NoClassDefFoundError: org/openmrs/module/htmlformentry/handler/TagHandler ** at java.lang.Class.getDeclaredConstructors0(Native Method)** ** at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)** ** at java.lang.Class.getConstructor0(Class.java:3075)** ** at java.lang.Class.newInstance(Class.java:412)** ** at org.openmrs.module.Module.getModuleActivator(Module.java:156)** ** 
 2 more** Caused by: java.lang.ClassNotFoundException: org.openmrs.module.htmlformentry.handler.TagHandler ** at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)** ** at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:259)** ** at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:235)** ** at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:227)** ** at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:470)** ** at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:421)** ** at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:558)** ** at java.lang.ClassLoader.loadClass(ClassLoader.java:357)** ** 
 7 more** INFO - LoggingAdvice.invoke(116) |2017-03-28 20:03:21,038| In method AlertService.saveAlert. Arguments: Alert=Alert: #null, INFO - LoggingAdvice.invoke(156) |2017-03-28 20:03:21,040| Exiting method saveAlert WARN - ModuleFactory.stopModule(1133) |2017-03-28 20:03:21,087| Unable to call module’s Activator.willStop() method org.openmrs.module.ModuleException: Unable to load/find moduleActivator: ‘org.openmrs.module.coreapps.CoreAppsActivator’ Module: Core Apps Module ** at org.openmrs.module.Module.getModuleActivator(Module.java:174)** ** at org.openmrs.module.ModuleFactory.stopModule(ModuleFactory.java:1128)** ** at org.openmrs.module.ModuleFactory.startModuleInternal(ModuleFactory.java:840)** ** at org.openmrs.api.context.Daemon$1.run(Daemon.java:74)** Caused by: java.lang.NoClassDefFoundError: org/openmrs/module/htmlformentry/handler/TagHandler ** at java.lang.Class.getDeclaredConstructors0(Native Method)** ** at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)** ** at java.lang.Class.getConstructor0(Class.java:3075)** ** at java.lang.Class.newInstance(Class.java:412)** ** at org.openmrs.module.Module.getModuleActivator(Module.java:156)** ** 
 3 more** Caused by: java.lang.ClassNotFoundException: org.openmrs.module.htmlformentry.handler.TagHandler ** at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)** ** at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:259)** ** at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:235)** ** at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:227)** ** at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:470)** ** at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:421)** ** at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:558)** ** at java.lang.ClassLoader.loadClass(ClassLoader.java:357)** ** 
 8 more** INFO - LoggingAdvice.invoke(116) |2017-03-28 20:03:21,090| In method AdministrationService.saveGlobalProperty. Arguments: GlobalProperty=property: coreapps.started value: false, INFO - LoggingAdvice.invoke(156) |2017-03-28 20:03:21,123| Exiting method saveGlobalProperty WARN - ModuleFactory.stopModule(1235) |2017-03-28 20:03:21,125| Unable to call module’s Activator.shutdown() method org.openmrs.module.ModuleException: Unable to load/find moduleActivator: ‘org.openmrs.module.coreapps.CoreAppsActivator’ Module: Core Apps Module ** at org.openmrs.module.Module.getModuleActivator(Module.java:174)** ** at org.openmrs.module.ModuleFactory.stopModule(ModuleFactory.java:1230)** ** at org.openmrs.module.ModuleFactory.startModuleInternal(ModuleFactory.java:840)** ** at org.openmrs.api.context.Daemon$1.run(Daemon.java:74)** Caused by: java.lang.NoClassDefFoundError: org/openmrs/module/htmlformentry/handler/TagHandler ** at java.lang.Class.getDeclaredConstructors0(Native Method)** ** at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)** ** at java.lang.Class.getConstructor0(Class.java:3075)** ** at java.lang.Class.newInstance(Class.java:412)** ** at org.openmrs.module.Module.getModuleActivator(Module.java:156)** ** 
 3 more** Caused by: java.lang.ClassNotFoundException: org.openmrs.module.htmlformentry.handler.TagHandler ** at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)** ** at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:259)** ** at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:235)** ** at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:227)** ** at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:470)** ** at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:421)** ** at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:558)** ** at java.lang.ClassLoader.loadClass(ClassLoader.java:357)** ** 
 8 more**

I would recommend you to install the openmrs core web app without any modules. Obviously OT module won’t work with the latest master.

hi @harsha89,
Core web app is running fine without any modules. To get OT module up and running should I try just bump up the versions of the dependent modules to the latest and see? what would you recommend? :slight_smile:

Hello @harsha89,

I hope you don’t mind me asking about the original OT module as you were the mentor :slight_smile:

I was able to replicate the exact environment (well, more than 95%) that Lukas submitted as his final submission for the OT module under your supervision. He had used a slightly modified OpenMRS core, which I tried running on the same outdated platform version as his, on a server I made with the SDK - same platform, exact same modules including the OT module. Only the OT module failed due to the Bean creation issue I’ve mentioned above. I’ve isolated the issue to a bean definition, but there’s not much I can do to solve it without affecting the functionality of the OT module.

  1. Could you suggest a method to test its functionality?
  2. If not, do you think creating a new OT module based on the previous one would be a good idea? Can make it work with Ref App 2.6 and forward.

I have a somewhat clear idea about the functionality of the old module, having gone through Lukas’ work. I believe I can recreate it for this project, incorporating modifications to the workflow as time permits. I’d like to hear your opinion on this. If you wish to see a proposal first, I’d be glad to provide one.

Side note - Hi @ayd, could you kindly use Pastebin or a similar service to report errors? :slight_smile:

1 Like

Hi all @harsha89 @akshika47

I am also struggling with this because it isn’t compatible with latest Open MRS. Documentation doesn’t talk about the installation steps as well. Although I tried to install the operation theater omod, doesn’t look like it is working. :persevere:

When I walked around about OT modules, I got this point as, If I want to use the existing module or any new module to work on Platform 2.0 and any older version, I need to be aware of the requirement to use DbSessionFactory instead of the SessionFactory class in the OT modules.

I think It’s not upgraded after the GSoC Project. So there are two ways to run this OT module on the current platform. I wish to get your ideas to make it a success!

  1. Make enough changes in the old project, and try to make it a success. then continue the GSoC 2017 on top of that project
  2. Start from the beginning part using the Documentation and complete the OT modules with this current requirements.

Here, Documentation contains the enough guidance(without installation part :joy:) with a wonderful video tutorial. So I can walk around that, and able to understand the workflow. I can put much effort to complete the project with the previous requirements also. It’s is needed to continue the project in the future time also.

I am expecting from you, are there any ways to run this module and continue the project, please suggest me and guide to continue from the last part or guide me to restart the Project. :slight_smile:

2 Likes

Hi ,

This is good progress.

Let me know the OpenMRS version that your are working? I assume the OT module is not compatible with the new OpenMRS. Therefore out target should be to quickly migrate it work with the new version of OpenMRS and start the improvements. Let me know if something is missing.

1 Like

In my case I was last using OpenMRS platform 1.9.7. it was mentioned in Luka’s work and the module’s POM file.

Latest OpenMRS versions give dependency conflicts. I’ve checked platform versions 2.x down to 1.9.5.

2 Likes

Yeah, there should be dependency conflicts, we will need to mitigate them quickly and get module to work with latest master. We will waste our time if we create a module from the scratch. Hence best option is to upgrade the module.

2 Likes