Repository for VHA Innovation 182 - Context Sensitive InfoButtons
This project is a part of the Veterans Health Administration (VHA) Grassroots initiative. Infobuttons are context-sensitive links embedded in the electronic health record (EHR). They use clinical context information from the EHR such as patient demographics, medications, diagnoses, lab results, user role, and clinical setting to help find answers to clinicians' and patients' clinical questions. This project will insert Infobuttons into eHMP and other VHA systems at several different points and use an Infobutton Manager to customize the way resources are delivered to clinicians. OpenInfobutton software has been certified through the Open Source EHR Alliance (OSEHRA) and is available through Apache 2.0 license.
Built with:
OpenInfobutton 2.3 improves performance, fixes bugs, simplifies the build, and adds a new feature to the InfoButton Responder.
New features/improvements:
-
The OpenInfobutton Responder now supports adding a summary and full content to the InfoButton response for an asset configured in the Responder. LITE has also been updated to adding/editing these fields.
-
The underlying database connections used by the OpenInfobutton Manager have been reconfigured to use new libraries, which has improved performance and the application's stability in a production server environment.
-
The code used to find terminology concept descendants for coded search criteria has been changed to run much faster.
Bug fixes:
-
A configuration bug with the database connections was causing instances of OpenInfobutton that experienced long periods without a request to crash. This has been fixed.
-
More old, unnecessary or conflicting dependencies have been removed from various pom files. This has significantly reduced build time and shrunk the size of the final WAR.
For those of you running an instance of the OpenInfobutton Responder, you need to run a small SQL migration script that adds the new table columns for Knowledge Summary and Knowledge Content. It is located under oib-responder/oib-rdbms-model/migration2223.sql. Also, I would recommend clearing your entire local maven repository for building the new version, otherwise you may encounter some errors at build or runtime.
OpenInfobutton 2.2 includes a major quality of life update and some important bug fixes.
New features/improvements:
-
A number of configurable properties are now stored in a database table and editable via LITE. These include UTS credentials, Github credentials and the OIDs used to configure profiles in LITE. This means that setting these properties no longer require rebuilding/restarting the service to set and every user of the same instance of LITE will have the same OIDs to pick from. Due to this change, the entire system configuration page is only accessible to administrators.
-
All terminology transformations for medications will now use the RxNorm REST API rather than UTS. These should speed up requests that require medication terminology transformations as the RxNorm REST API is much faster.
-
Both the OIB manger and responder now both use the latest version of UTS for all requests, rather than a configured version
Bug fixes:
-
A major issue related to concurrent request handling has been resolved. With increased traffic to our hosted OIB instance, we began noticing errors in the response that seemed to indicate a concurrency issue. This was investigated and is now fixed. Users hosting an instance with heavy traffic should observe much more reliable request handling.
-
Terminology transformations that returned no results by the underlying API were previously causing an error with the response. This has been resolved and the request should be properly handled with a failed match rather than throwing an error.
-
We've also removed transformations that are no longer supported by the underlying APIs so they are no longer attempted.
OpenInfobutton 2.1 is a major release that includes new features, bug fixes and a Vagrant/VirtualBox virtual machine that can be deployed with minimal configuration. Most importantly OIB now requires upgrading to JDK8, IT WILL NOT BUILD OR RUN WITH OLDER VERSIONS OF JAVA. While I understand this may be an inconvenience to some, JDK7 has been EOL by Oracle, meaning they are no longer releasing security updates for it. Given the nature of OpenInfobutton as a facet of clinical information systems, it made sense to upgrade for this reason alone.
New features:
- We are now maintaining and distributing a preconfigured VM with instances of both OpenInfobutton and LITE already running. Users had been requesting an easier way to deploying their own instance of OpenInfobutton and we believe this is the best route going forward. It can be found here:
https://github.com/VHAINNOVATIONS/InfoButtons/releases
-
Value sets are now hosted in Github, similarily to the store profiles, and will now be centrally curated so they no longer need to managed for individual installs. The LITE profile editor now includes a pick list for value sets that automatically populates from Github.
-
Terminology translations and free text lookups now use the UTS REST API, rather than the now deprecated SOAP service. This both reduces the size of the deployed WAR and increases the speed of requests that require terminology services.
-
The InfoButton request log now includes the full response to make debugging easier. We are also now logging the request URL parameters rather than an XML representation of the request.
-
LITE now includes a demo page and a request testing tool so users can more easily test their install.
-
You can now change the admin username and password directly from LITE rather than editing the database.
Bug fixes and improvements:
-
Updated to the latest versions of Spring, Hibernate, and log4j2 which is another reason why JDK8 is now required
-
ICD9 to SNOMED-CT mappings have been deprectated and removed from OpenInfobutton
-
Free text matching sometimes clashed with simultaneous requests, causing inconsistent results to be returned. This has been fixed.
-
The Responder RXNorm translation functionality was no longer working due to an update to the RXNorm web service. The responder has been updated to account for that change.
-
Various improvements to LITE's usability have been implemented.
I've tried to streamline the building and deployment process as much as possible. To that end, many old or no longer needed dependencies have been removed. This has allowed me to remove our Nexus repository from all the Maven POM files, now all dependencies are retrieved directly from Maven central. You will of course still need an unrestricted internet connection to build the application, but it should be much more reliable and faster now. As mentioned earlier, you MUST UPGRADE TO JDK8. You will also need to COMPLETELY WIPE YOUR LOCAL MAVEN REPOSITORY, you WILL encounter build errors if you dont. I would also recommend upgrading to Tomcat 8 or later as well, but this is not currently required. There is a minor database migration script for the changes to the request log, and the value set database has been scrapped entirely in favor of a simpler schema that stores the value sets as XML files, exactly as they are in Github. You can configure your installation of OpenInfobutton to use either the Github value sets OR the database.
OpenInfobutton 2.0 includes many major feature updates as well as optimizations and bug fixes to existing features.
Major features:
- This is the first fully featured release of the LITE OpenInfobutton management tool. It includes the ability to download resource profiles from the OpenInfobutton cloud-based profile store, configure custom resource profiles, and index local resources for the infobutton responder.
- Major improvements in the overall usability of LITE.
- LITE user authentication
Other general improvements:
- A typeahead style search for Main Search Criteria in the Responder asset property editor
- An additional database table that allows organizations to "blacklist" a profile based on the userId request parameter
- Optimizations to profile loading code in the Infobutton Manager that speed up its response time
- An optional unit test that can be used as to monitor the status of an OpenInfobutton server
- Various other bug fixes and optimizations that are logged in our github repository
While this release does not make any changes to any existing OIB databases or tables, it does require the creation of two new tables for the profile black list and LITE user authentication. I've updated the BUILDGUIDE for oib-request and added the additional SQL scripts under the DeploymentPackage/dbScripts directory. There has also been an additional module added called rest-terminology-services that must be built and installed into your local maven repository before building oib-request. This module includes a java client for calling UMLS REST API.
This update improves the LITE backend by moving the web service endpoints to the main OIB Manager and Responder web applications. This means that in order for LITE to function, you must have a running instance of both the OIB Manager and Responder to connect to. It eliminates the need for the oib-site-lite-rest-server module, which has been removed from the repository. It also adds some additional features to LITE, including asset copying and multi-select for asset properties.
This release does not require any database changes, however v_* views in the resource_profile database are no longer needed and can be safely dropped. It does require a rebuild and redeploy of all the following modules:
- Infobuton manager: oib-request
- Infobutton responder: oib-responder
- LITE client: oib-site-lite-ui
As mentioned, the oib-site-lite-rest-server module is no longer needed and can be removed.
This version includes some bug fixes to the Manager, new LITE functionality for add/editing OpenInfobutton Responder assets, and an update to the Infobutton Responder to faciliate the new functionality.
This release only requires updates to the Responder database, the Manager database is unaltered. It does require a rebuild and redeploy of all the following modules:
- Infobuton manager: oib-request
- Infobutton responder: oib-responder
- LITE REST web server: oib-site-lite-rest-server
- LITE client: oib-site-lite-ui
There is a migration guide (oib-rest-responder/MIGRATION1011) for the responder that details the additional changes needed to enable the new LITE functionality. For those new to the responder, refer to the BUILDGUIDE (oib-rest-responder/BUILDGUIDE).
The new version of OpenInfobutton introduces the first public release of the LITE web application, which allows configuration of Infobutton Resource Profiles to be managed by domain experts with no IT background, such as medical librarian. This release also includes bug fixes for the Infobutton Manager service.
There have been several changes to both the naming and structure of the OpenInfobutton databases. This release includes 4 modules:
- Infobuton manager: oib-request
- Infobutton responder: oib-responder
- LITE REST web server: oib-site-lite-rest-server
- LITE client: oib-site-lite-ui
The build instructions and database scripts have been updated to reflect them. For new installations, please refer to the BUILDGUIDE inside each respective module. For migration from previous versions of the infobutton manager (oib-request module), please refer to the MIGRATIONGUIDE. For now, we only have a migration guide for version 1.6, but this migration guide can be also used for versions prior to 1.6.
As mentioned, this version includes the LITE web application for configuring OpenInfobutton. We've prepared a user's guide showing how to use most of it's functions,
https://www.openinfobutton.org/documentation/lite-users-guide
-Optimized UMLS services so they timeout and fail silently when a terminology request hangs for too long. Previous behavior would block the entire Infobutton Service request and potentially return server errors to the client.
-Added an additional web service for use by the LITE tool for configuring the service. This is still in the experimental stages and not fully functional. The current version of LITE does not use this web service, instead using a separate javascript web service with CRUD functions for the Infobutton database.
-Initial release of LITE Tool. Refer to the BUILDGUIDE in oib-site-lite-ui and oib-site-lite-server to install. The instructions in those files are for a development instance. For production, you are encouraged to minify the /app/ directories of both projects and deploy to a web server of your choice.
-Refactored modules into a logical build hierarchy that can be compiled from a single POM -Refactored individual classes so they are now organized into logical package names -The entire application is instantiated via Spring configuration files -Removed references to Duke in all Maven artifact Ids and package names -Cleaned up unnecessary dependencies in POM files to speed up build times -Created a testing framework where the necessary database tables are created with the necessary table for execution of test scripts -Unit tests for basic Profile matching -Unit tests for transform execution -Unit tests for response parsing -Includes a CMake build file to quickly build and test the code