Platform Release Notes 1.12.0

Platform Release Notes 1.12.0

Introducing: OpenMRS Platform 1.12

When OpenMRS reached 2.0, we decided to allow the platform – application programmer interface (API) and web services – to develop and grow separately from the web application.  As a result, we have named the API and web services "OpenMRS Platform" (while the web-based medical record system is called "OpenMRS Reference Application").

This release is the "OpenMRS Platform 1.12" – it is the release version of the under-the-hood OpenMRS API that follows the OpenMRS 1.11.x line. We do not currently intend to use this version of the platform in a Reference Application release. (Reference Application 2.4 will still be on the Platform 1.11.x line, and we intend for Reference Application 2.5 to jump to Platform 2.0.)

Release Date: Wednesday May 25th 2016

Release Manager: Bharat Akkinepalli

What's New in OpenMRS Platform 1.12.0

This release contains the following features 

  • Support for OrderSets and OrderGroups

  • Drug name search should accept special characters

  • Retrospective stop of orders

  • Retrospective discontinuation of orders.

Bugs

  • [TRUNK-3383] - HandlerUtil.getPreferredHandler(Class<H> handlerType, Class<T> type) throws an exception if top-ranked handlers have the same order ranking

  • [TRUNK-3580] - MessageSourceService.getMessage methods that take a MessageSourceResolvable should return the proper default message

  • [TRUNK-3915] - liquibase change-set 20090402-1518 (Adding not-null constraint to uuid columns) not run when creating a new 1.9.3 database from scratch

  • [TRUNK-4757] - Inconsistent error messages reported about new patient's age

  • [TRUNK-4767] - Application Data directory structure in Windows 10 causes install problem

  • [TRUNK-4771] - Authorization checks are slow when running as Daemon

  • [TRUNK-4779] - Cache reflection info for calls in RequiredDataAdvice

  • [TRUNK-4782] - Retrospective edit of Orders.

  • [TRUNK-4793] - obsValueField.tag has an invalid jstl expression

  • [TRUNK-4796] - Drug search with special characters in name throws exception

  • [TRUNK-4805] - Retrospective stop of orders

  • [TRUNK-4810] - isDatabaseStringComparisonCaseSensitive must be cached

  • [TRUNK-4811] - Daemon user must be cached

  • [TRUNK-4814] - Error creating patient for large location IDs > 1000

  • [TRUNK-4817] - A user should be redirected to home page if logged in instead of the login page

  • [TRUNK-4824] - Concept Name Tag Validator throws a duplicate error for the same concept name tag

  • [TRUNK-4825] - Module upload should not refresh context more than once

  • [TRUNK-4826] - Springloaded does not work on Windows

  • [TRUNK-4831] - Unvoid Patient Record ends up NullPointerException

  • [TRUNK-4841] - Using @JoinColumn instead of @Column with @ManyToOne in BaseOpenmrsData

Epic

  • [TRUNK-4794] - The goal of this issue is to add the ability to use order sets for orders.

New Feature

  • [TRUNK-4761] - Free Text Drug Orders

  • [TRUNK-4769] - Add another method in HibernateContextDAO to use start() method of MassIndexer class

  • [TRUNK-4833] - Add getDrugIngredientByUuid() to the service layer

Story

  • [TRUNK-4834] - Support for Order Sets and Order Groups

Sub-task

  • [TRUNK-4799] - Fix ERROR - EncounterSaveHandler.handle: Unable to save complex obs

Contributors

We are so thankful to all our contributors towards this release, here is a list of these wonderful people

Buddha, Daniel Kayiwa, Michael Seaton, Rafal Korytkowski, SwathiVarkala, Venkata Jaswanth, Wyclif Luyima, bholagabbar, chenjr95, dkayiwa, shruthidipali, wyclif, ys-achina

Not forgetting all the people that contributed in countless other ways to support and be a great part of the shaping of this release: We are very sensitive not to hurt your emotions and in-case you are one of such please email us and we shall be able to mention you by name

Community Input

We welcome any user to download OpenMRS 1.12.0 and try it out, give us feedback, and potentially bug reports on this release. We especially ask current users to try this version out on their own database and with their custom modules.

Even if you don't have time to do any thorough testing, we'd really appreciate it if you can upgrade a copy of your database to the 1.12.0 data model, and report on any errors than may occur in the upgrade script.

If a new bug is found create a new JIRA ticket .

We do not recommend using this in a production environment!

Download

OpenMRS Platform 1.12.0 represents revision: 8f283ea385d71421d810027c4a6ea70c22c7675b

Download OpenMRS Platform 1.12.0

 

CIEL Dictionary:

 openmrs_concepts_1.11.2_20160427.sql (the Concept database tables have not changed since Platform 1.11.x, so you can use the same CIEL dictionary)

Installation

  • Unzip the downloaded OpenMRS Platform 1.12.0 zip file. (For linux users; this needs to be in an ext file system type, most partitions created with and having windows formats will not work since the installation needs to change file permissions which ubuntu allows for only ext file systems - TODO add reference)

  • Change directory into the openmrs-standalone-1.12.0 folder and then run the standalone using the java -jar openmrs-standalone.jar command.

  • The openmrs standalone window will show up and you can proceed from there.

  • The installation provide you three options but most the times you will use either the demonstration or fresh installation (comes with the above mentioned concept dictionary).

Upgrading

Consider using our upgrading guide. In summary for Standalone 1.9.x or any other upgrade to 1.12.0, follow this guide:

  • Back up your database to be on the safe side in-case something goes wrong, use either the Database Backup Module or refer to the MySQL Backup guide.

  • Stop all the Modules and logout of openmrs if possible.

  • Close the openmrs standalone window

  • Download the OpenMRS Platform 1.12.0 from sourceforge and replace the war file in your previous standalone located under tomcat/webapps folder (also delete the openmrs-standalone folder) with the newly downloaded war file.

  • Now re-run the standalone again, you will go through the database upgrade process (maintenance mode) by signing in as an administrator when prompted.

Bundled Modules

This module is bundled with OpenMRS 1.12.0. It will be started automatically and can be removed if desired.

Bundled Module

Version

Bundled Module

Version

Rest Web Services

2.13

Changes for Module Developers

  • TRUNK-3915: Adding a changeSet that adds uuids where it doesn't exist, before adding not null constraint.

  • TRUNK-4824 Concept name tag validator not to throw duplicate validation error for the tag being validated

  • TRUNK-4810 isDatabaseStringComparisonCaseSensitive must be cached

  • TRUNK-4811 Daemon user must be cached

  • TRUNK-4826 Springloaded does not work on Windows

  • MessageSourceService.getMessage methods that take a MessageSourceResolvable should return the proper default message

Data Model Changes

# Checks that all existing free text drug order dose units and frequencies have been mapped to concepts, this will fail the upgrade process if any unmapped text is found # Checking that all orders have start_date, encounter_id and orderer columns set # Checking if there are any drugs with the dose_strength specified but no units # Checking if order_type table is already up to date or can be updated automatically # Adding unique key constraint to order_type.name column # Adding java_class_name column to order_type table # Adding parent column to order_type table # Setting java_class_name column for drug order type row # Add not-null constraint on order_type.java_class_name column # Insert order type for test orders # Making orders.start_date not nullable # Making order.encounter required # Make orders.orderer not NULLable # Renaming drug_order.prn column to drug_order.as_needed # Adding as_needed_condition column to drug_order table # Adding order_number column to orders table # Setting order numbers for existing orders # Making orders.order_number not nullable # Adding previous_order_id to orders # Adding order_action to orders and setting order_actions as NEW for existing orders # Renaming drug_order.complex to dosing_type # Making drug_order.dosing_type nullable # Converting values in drug_order.dosing_type column # Adding num_refills column to drug_order table # Create the order_frequency table # Adding dosing_instructions column to drug_order table # Adding comment_to_fulfiller column to orders table # Adding duration column to drug_order table # Adding duration_units column to drug_order table # Adding quantity_units column to drug_order table # Changing quantity column of drug_order to double # Adding route column to drug_order table # Dropping equivalent_daily_dose column from drug_order table # Adding dose_units column to drug_order table # Adding foreignKey constraint on dose_units # Migrating old text units to coded dose_units in drug_order # Deleting units column # Adding frequency column to test_order table # Adding number_of_repeats column to test_order table # Rename orders.discontinued_date to date_stopped # Creating Discontinue Order for discontinued orders # Setting order.discontinued_reason to null for stopped orders # Setting orders.discontinued_reason_non_coded to null for stopped orders # Removing discontinued from orders # Dropping fk constraint on orders.discontinued_by column to users.user_id column # Removing discontinued_by from orders # Temporarily renaming drug_order.frequency column to frequency_text # Adding the frequency column to the drug_order table # Creating coded order frequencies for drug order frequencies # Migrating drug order frequencies to coded order frequencies # Dropping temporary column drug_order.frequency_text # Adding care_setting table # Adding OUTPATIENT care setting # Adding INPATIENT care setting # Add care_setting column to orders table # Set default value for orders.care_setting column for existing rows # Make care_setting column non-nullable # Add foreign key constraint # Add drug_reference_map table # Temporary dropping foreign key on orders.discontinued_reason column # Renaming orders.discontinued_reason column to order_reason # Adding back foreign key on orders.discontinued_reason column # Renaming orders.discontinued_reason_non_coded column to order_reason_non_coded # Creating provider accounts for all users who have placed orders for patients and have no associated provider accounts # Temporarily removing foreign key constraint from orders.orderer column # Converting orders.orderer to reference provider.provider_id # Adding foreign key constraint to orders.orderer column # Inserting Frequency concept class # Adding scheduled_date column to orders table # Add order_type_class_map table # Concatenate dose_strength and units to form the value for the new strength field # Add changed_by column to order_type table # Add date_changed column to order_type table

1 New Issue

Upcoming End of Release notice

OpenMRS 1.9 will reach end of life when Platform 1.12.0 is released.

As of described in Unsupported Releases (EOL), OpenMRS can only support up to three released versions at a time (the current release and then two versions back). With the release of Platform 1.12.0, support for 1.9 will no longer be provided by the core Development Team for OpenMRS 1.9.x and earlier. This announcement also serves as advance notice that support will end for OpenMRS 1.9.x, concurrent with the release of Platform 2.0.