Appointments module with bahmni 0.88

Hi,

I have looked at https://bahmni.atlassian.net/wiki/display/BAH/Appointments+Module which mentions issues with appointment module. It also suggests some specific versions of omods, which I believe is supposed to work. I am wondering whether that applies to 0.88 as well or specific to 0.82?

I am not sure if Appointment scheduling module of OpenMRS now works with latest Bahmni – since we have also upgraded to OpenMRS 2.x recently. We found that the Appointment scheduling module had some bugs and our customers want some more features/flexibility than what is available from Apt Sched module out to the box. Therefore, we hope to build a new Appointment scheduling module for Bahmni customers.

Its development hasn’t yet started. The following trello card had some details: https://trello.com/c/h0BbaEBM/54-appointment-scheduling

Thanks @gsluthra. That is useful information. Since it is coming from OpenMRS directly, I thought loading right versions of the omods might let me use the appointment feature. So I downloaded all the latest omods from the link. However that didn’t help. Looking at the openmrs.log, I see the following

15-03-2017 21:57:28 [ERROR] ModuleFactory - Module Core Apps Module cannot be started because it requires the following module(s): appui 1.7 Please install and start these modules first. 15-03-2017 21:57:28 [ERROR] ModuleFactory - Module Appointment Scheduling UI Module cannot be started because it requires the following module(s): uicommons 2.0, coreapps 1.11.0 Please install and start these modules first.

well, initially it listed some more modules for which I could find the updated ones. However I couldn’t find the listed appui1.7 and uicmmon2.0 modules. Perhaps this is not bahmni specific, but I hope you might know the answer.

Never mind, I got it working after some experimentation with different module versions. Haven’t tried scheduling yet, but the UI is visible. Here is the list of modules I have used to get it working for .88. -rw-r–r-- 1 root root 14M Mar 15 17:32 reporting-0.9.9.omod -rw-r–r-- 1 root root 1.5M Mar 15 20:50 appointmentscheduling-1.7.0.omod -rw-r–r-- 1 root root 27K Mar 15 20:50 appui-1.5.1.omod -rw-r–r-- 1 root root 62K Mar 15 20:50 htmlformentry19ext-1.7.omod -rw-r–r-- 1 root root 274K Mar 15 20:50 htmlformentryui-1.6.0.omod -rw-r–r-- 1 root root 1.6M Mar 15 20:50 htmlformentry-3.3.1.omod -rw-r–r-- 1 root root 67K Mar 15 20:50 reportingrest-1.6.omod -rw-r–r-- 1 root root 14M Mar 15 20:50 reporting-0.11.0.omod -rw-r–r-- 1 root root 2.3M Mar 15 21:54 uiframework-3.9.omod -rw-r–r-- 1 root root 1.1M Mar 16 13:01 coreapps-1.11.0.omod -rw-r–r-- 1 root root 2.1M Mar 16 13:08 appointmentschedulingui-1.3.omod

Thank you for detailing it here. Appreciate it!

Btw, I have forked Provider scheduling page throwing exception to discuss further issues associated with appointment scheduling with 0.88

Hello @gsluthra, do you have any idea when this Bahmni Appointment scheduling will be realesed?

  • Ian Manyama

No - we don’t have any immediate plans of building Appointment Scheduling module. The Bahmni Product Core team isn’t working on it currently. But one of the project teams is building Operation Theatre Scheduling module right now, and the plan is that after that they will build an Appointment Scheduling module for their hospital (single speciality referral hospital). They mentioned that the module will come out in Sep-2017 most likely.

/cc: @madhum - Comments?

That module allows people to specify Provider Schedules, and then allot appointment slots for patients against a Provider Schedule.

Hi all,

I have followed the procedure for installing the appointments module with Bahmni 0.88 but I still have this nagging error below, popping up, as soon as I attempt to run appointments.

I can’t tell for sure what is happening but for some funny reason, after placing both reporting-0.9.9.omod and reporting-0.11.0.omod in /opt/openmrs/modules, I can only see reporting-0.11.0.omod listed and running in the modules list.

Please can anyone help me out?

Thanks. Ekow.

Error using reporting-0.11.0.omod HTTP Status 500 - Request processing failed; nested exception is java.lang.NullPointerExceptiontype Exception reportmessage Request processing failed; nested exception is java.lang.NullPointerExceptiondescription The server encountered an internal error that prevented it from fulfilling this request.exceptionorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) javax.servlet.http.HttpServlet.service(HttpServlet.java:618) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.openmrs.module.web.filter.ForcePasswordChangeFilter.doFilter(ForcePasswordChangeFilter.java:60) org.openmrs.module.web.filter.ModuleFilterChain.doFilter(ModuleFilterChain.java:72) org.openmrs.module.web.filter.ModuleFilter.doFilter(ModuleFilter.java:54) org.openmrs.web.filter.OpenmrsFilter.doFilterInternal(OpenmrsFilter.java:108) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:150) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:105) org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:105) org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:105) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) root causejava.lang.NullPointerException org.openmrs.module.appointmentscheduling.api.impl.AppointmentServiceImpl$1.compare(AppointmentServiceImpl.java:860) org.openmrs.module.appointmentscheduling.api.impl.AppointmentServiceImpl$1.compare(AppointmentServiceImpl.java:857) java.util.TimSort.binarySort(Unknown Source) java.util.TimSort.sort(Unknown Source) java.util.Arrays.sort(Unknown Source) java.util.ArrayList.sort(Unknown Source) java.util.Collections.sort(Unknown Source) org.openmrs.module.appointmentscheduling.api.impl.AppointmentServiceImpl.getAllProvidersSorted(AppointmentServiceImpl.java:857) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) com.sun.proxy.$Proxy216.getAllProvidersSorted(Unknown Source) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) org.openmrs.aop.LoggingAdvice.invoke(LoggingAdvice.java:121) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:52) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:52) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) com.sun.proxy.$Proxy217.getAllProvidersSorted(Unknown Source) org.openmrs.module.appointmentscheduling.web.controller.AppointmentListController.getProviderList(AppointmentListController.java:104) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:163) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) javax.servlet.http.HttpServlet.service(HttpServlet.java:618) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.openmrs.module.web.filter.ForcePasswordChangeFilter.doFilter(ForcePasswordChangeFilter.java:60) org.openmrs.module.web.filter.ModuleFilterChain.doFilter(ModuleFilterChain.java:72) org.openmrs.module.web.filter.ModuleFilter.doFilter(ModuleFilter.java:54) org.openmrs.web.filter.OpenmrsFilter.doFilterInternal(OpenmrsFilter.java:108) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:150) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:105) org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:105) org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:105) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) note The full stack trace of the root cause is available in the Apache Tomcat/8.0.12 logs.

Regarding the above, this seems like a dependency compatibility issue. btw, You might be interested in this

Thanks Angshuman :+1: