OpenMRS-core 2.1.0-beta Release Notes

Release Date: Friday, April 7, 2017

This version of OpenMRS Core is a pre-release and is not ready for production use. Its purpose is to give users an idea of what to expect in the upcoming release and help discover any possible obscure new bugs.

What's New

Some interesting features in the 2.1 line will be:

  • Support for status (e.g. for recording preliminary lab results) and interpretation (e.g. for marking a test result as abnormal)

  • Enhancements to the data model for Cohorts, to add a start date and end date

  • Faster patient searches (using Lucene under the hood)

  • Loosening restrictions on merging patients who have orders

  • Simple approach for developers to add caches programmatically

We expect that 2.1.x will be the first non-LTS release, where we only release openmrs-core to maven for developers, and don't do a full OpenMRS Platform release. Read more about this means in the (future) release notes final release.

Download

Get it at https://sourceforge.net/projects/openmrs/files/prereleases/OpenMRS_Core_2.1.0_Beta/

Feedback Welcome!

As always, we look forward to getting your feedback about this release. Share your thoughts on http://talk.openmrs.org.

We would especially like review of these features:

Error rendering macro 'jira' : Unable to locate Jira server for this macro. It may be due to Application Link configuration.

Error rendering macro 'jira' : Unable to locate Jira server for this macro. It may be due to Application Link configuration.

Error rendering macro 'jira' : Unable to locate Jira server for this macro. It may be due to Application Link configuration.

Data Model Changes since 2.0.0

  • Add unique_id column to concept_reference_source

  • Dropping foreign key constraint member_patient

  • Dropping foreign key constraint parent_cohort

  • Dropping primary key for cohort_member

  • Adding column cohort_member.cohort_member_id

  • Updating cohort member ids

  • Adding primary key to cohort_member.cohort_member_id

  • Adding auto increment property to cohort_member.cohort_member_id

  • Adding column cohort_member.start_date

  • Updating cohort_start_date with value cohort.date_created

  • Adding column cohort_member.end_date

  • Adding column cohort_member.creator

  • Updating cohort_member.creator value

  • Adding foreign key constraint to cohort_member.creator

  • Adding column cohort_member.date_created

  • Updating cohort_member.date_created with value cohort.date_created

  • Adding column cohort_member.voided

  • Adding defaultValue for cohort_member.voided

  • Adding column cohort_member.voided_by

  • Adding column cohort_member.date_voided

  • Adding column cohort_member.void_reason

  • Adding column cohort_member.uuid

  • Generating UUIDs for all rows in cohort_member table via built in uuid function.

  • Adding unique constraint to cohort_member.uuid

  • Adding foreign key constraint to cohort_member.cohort_id

  • Adding foreign key constraint to cohort_member.patient_id

  • Dropping defaultValue for cohort_member.cohort_id

  • Dropping defaultValue for cohort_member.patient_id

  • Adding "date_changed" column to concept_class table

  • Adding "changed_by" column to concept_class table

  • Adding "date_changed" column to concept_reference_source table

  • Adding "changed_by" column to concept_reference_source table

  • Adding "date_changed" column to concept_name table

  • Adding "changed_by" column to concept_name table

  • Adding "date_changed" column to concept_name_tag table

  • Adding "changed_by" column to concept_name_tag table

  • Adding "date_changed" column to form_resource table

  • Adding "changed_by" column to form_resource table

  • Adding "date_changed" column to global_property table

  • Adding "changed_by" column to global_property table

  • Adding "date_changed" column to patient_identifier_type table

  • Adding "changed_by" column to patient_identifier_type table

  • Adding "date_changed" column to relationship_type table

  • Adding "changed_by" column to relationship_type table

  • Adding "status" column to obs table

  • Adding "interpretation" column to obs table

  • Modify column length of obs.value_complex to 1000 from 255

Ticket Statuses at the time of the Beta release

Issue Type

Key

Summary

Status

New Feature

TRUNK-5123

getConceptByName should immediately return concept if only one matching concept

Waiting on Information

New Feature

TRUNK-5109

Enhance ObsService to provie getRevisionObs

Closed

New Feature

TRUNK-5077

AbstractHandler#purgeComplexData(Obs) should return true when file is missing from disk

Closed

New Feature

TRUNK-5012

Ability to limit lucene patient search by identifier to a particular identifier type

Closed

New Feature

TRUNK-4980

Enable hibernate second level cache for org.openmrs.Privilege

Closed

New Feature

TRUNK-4976

Support obs.interpretation and obs.status, aligned with FHIR

Code Review (Post-Commit)

New Feature

TRUNK-4975

Making Family name as Optional

Closed

New Feature

TRUNK-4971

Add caches programmatically

Closed

New Feature

TRUNK-4964

ComplexObsHandlers should support complex data encoded as text

Closed

New Feature

TRUNK-4947

Add ConceptService.getConceptSourceByHL7Code

Closed

New Feature

TRUNK-4941

Add ModuleUtil.isOpenmrsVersionInVersions()

Closed

New Feature

TRUNK-4936

Add ConceptSource.uniqueId

Closed

New Feature

TRUNK-4935

Remove a TODO in code about refactoring ProgramWorkflowService.getPatientPrograms()

Closed

New Feature

TRUNK-4933

Create pull request to remove TODO comments from core code

Closed

New Feature

TRUNK-4931

Remove a TODO in code about notifying on global property name changes

Closed

New Feature

TRUNK-4930

Remove a TODO in the code about AdministrationService.getPresentationLocales() return type

Closed

New Feature

TRUNK-4928

Remove code TODO about interface OpenmrsMetadata should support localized names and descriptions

Closed

New Feature

TRUNK-4906

Expanded cohort details

In Progress

New Feature

TRUNK-4696

SaveOrder method should throw more meaningful exceptions

Code Review (Post-Commit)

New Feature

TRUNK-4673

Add support for init parameters for module servlets

Closed

New Feature

TRUNK-4668

When a module is started, all its dependent modules should be started

Closed

New Feature

TRUNK-3675

Cache results from getSearchLocales()

Closed

New Feature

TRUNK-2698

Allow admins to view and edit all concept names

Closed

New Feature

TRUNK-2038

Update the simple order jsp pages to work with the new attributes

Closed

New Feature

TRUNK-2004

Ignore blank person addresses on the patient forms

Closed

New Feature

TRUNK-1916

Code coverage and Test report for OpenMRS

Closed

New Feature

TRUNK-1873

Regression Test OpenMRS with Apache Tomcat 7.

Closed

New Feature

TRUNK-1682

Add maven module for checkstyle

Closed

New Feature

TRUNK-425

Use Hibernate Search with Apache Lucene for Patient Searches

Closed

New Feature

TRUNK-423

End-User-Friendly Patient Matching and de-duplication in the core application

Closed

New Feature

TRUNK-362

HL7 message routing improvements

Closed

Story

TRUNK-5010

In some cases it should be possible to merge patients even if both have active orders

Closed

Story

TRUNK-4943

Failing to start the server due to CacheManager issue

Closed

Bug

TRUNK-5120

Unable to modify/edit a Program from OpenMRS admin

Closed

Bug

TRUNK-5079

Fix HL7UtilTest failure on OpenJDK 7

Closed

Bug

TRUNK-5078

Remove velocity.log files

Closed

Bug

TRUNK-5075

EncounterTest random failures

Closed

Bug

TRUNK-5071

Fix performance of get concepts by mapping

Closed

Bug

TRUNK-5066

Add tests to ConceptServiceImpl

Closed

Bug

TRUNK-5058

Extract private method in ObsServiceImpl.saveExistingObs

Closed

Bug

TRUNK-5056

Use apache StringUtils in OrderSetServiceImpl

Closed

Bug

TRUNK-5044

Use platform agnostic newlines in string formatting

Closed

Bug

TRUNK-5038

Replace StringBuffer with StringBuilder

Closed

Bug

TRUNK-5036

HibernateConceptDAO.getConceptByName() method logs incorrect warning message

Closed

Bug

TRUNK-5035

Use Boolean.valueOf to test strings

Closed

Bug

TRUNK-5030

Collection.isEmpty() should be used to test for emptiness

Closed

Bug

TRUNK-5024

Accepting more characters for observation value of type Text

Closed

Bug

TRUNK-5021

AllergenType includes some invalid options

Closed

Bug

TRUNK-5019

Error Scenario in Obs Save : New child Obs not saving when entire Obs group is updated

Closed

Bug

TRUNK-5018

defaultLocale property of User is not updated to Context when the user is logged in

Closed

Bug

TRUNK-5017

Encounter.removeProvider fails if same provider has already been removed once before

Closed

Bug

TRUNK-5016

Weak password message is not translated while the exception is raised

Closed

Bug

TRUNK-5009

Set HttpOnly for JSESSIONID cookie

Closed

Bug

TRUNK-5005

ModuleFactoryTest Error

Closed

Bug

TRUNK-4984

TextHandler does not work

Closed

Bug

TRUNK-4978

Another CacheManager with same name 'apiCache' already exists in the same VM

Closed

Bug

TRUNK-4977

ImageHandler.saveObs(Obs) to close outfile

Closed

Bug

TRUNK-4973

Saving Existing Obs will not update formNamespaceAndPath

Closed

Bug

TRUNK-4970

Obs retrieval from the encounter should maintain the same order in which it is added

Closed

Bug

TRUNK-4968

Non empty database should not fail when finishing database setup

Closed

Bug

TRUNK-4967

NPE in HibernateConceptDAO.isConceptNameDuplicate

Closed

Bug

TRUNK-4965

Encounter with complex obs throws NullPointerException on save

Closed

Bug

TRUNK-4959

Clean Hibernate session after applying liquibase changesets

Closed

Bug

TRUNK-4957

Code cleanup: remove duplication in getApplicationDataDirectory

Closed

Bug

TRUNK-4949

Patient Merge - HibernatePatientDAO - getDuplicatePatientsByAttributes - Not performing on large database

Closed

Bug

TRUNK-4945

Adding setmember to concept with retired set members either does not get added up or gets added in the wrong position

Closed

Bug

TRUNK-4940

Obs validator validates for empty value in parent obs which is to be voided

Closed

Bug

TRUNK-4939

VisitValidator should ensure that the visit start date can't be before the birth date of the patient

In Progress

Bug

TRUNK-4938

ConceptService.getConceptSourceByName privilege annotation wrong

Closed

Bug

TRUNK-4937

Saving a visit should not cascade to encounters associated to it

Closed

Bug

TRUNK-4927

Remove a TODO in code about config parameter from DatatypeService.getDatatype

Closed

Bug

TRUNK-4926

Remove a TODO in code about PatientIdentifierType.toString() returning a more "debug-worth" string

Closed

Bug

TRUNK-4925

Copy patient specific attributes on Patient() constructor

Closed

Bug

TRUNK-4923

Remove TODOs from code about addAttribute() needs validation

Closed

Bug

TRUNK-4922

ConceptDAO filters concepts only if results were found by fullTextQuery

Closed

Bug

TRUNK-4918

Remove unused classes and files

Closed

Bug

TRUNK-4915

Concept validator should require datatype and conceptClass fields

Closed

Bug

TRUNK-4913

Concept.hbm.xml not-null on optional changedBy

Closed

Bug

TRUNK-4912

BaseOpenmrsData creator, dateCreated, uuid should be not updatable

Closed

Bug

TRUNK-4902

HibernateOrderDAO exception uses wrong message code

Closed

Bug

TRUNK-4879

NullPointerException at org.openmrs.api.customdatatype.datatype.ConceptDatatype#doGetTextSummary

Closed

Bug

TRUNK-4875

Add unit test for findPossibleValues method of Concept Class

Closed

Bug

TRUNK-4869

Should not be able to set birth or death dates later than present date

Closed

Bug

TRUNK-4867

Do not allow person/patient to have death date before birth date

Closed

Bug

TRUNK-4865

HL7ServiceImpl#resolveUserId should search for users by person name

Code Review (Post-Commit)

Bug

TRUNK-4851

Error in unit test of PatientServiceTest class

Closed

Bug

TRUNK-4850

Module.getExtensions() does not call Module.expandExtensionNames() appropriately

Closed

Bug

TRUNK-4849

NullPointerException at org.openmrs.util.Format#format(Date, Locale, Format.FORMAT_TYPE)

Closed

Bug

TRUNK-4848

NullPointerException at org.openmrs.web.WebUtil#normalizeLocale()

Closed

Bug

TRUNK-4813

SQLException during the initial setup on MySQL 5.7

Closed

Bug

TRUNK-4776

Incorrect Global Properties for CIEL

Closed

Bug

TRUNK-4720

Encounter search will not match on id unless it contains digits

Closed

Bug

TRUNK-4678

ModuleActivatorTest shouldStopDependantModulesOnStopModule fails randomly

Closed

Bug

TRUNK-4539

Object validation should enforce maximum length based on column length constraints in the DB

Closed

Bug

TRUNK-4093

Forms should not be required in HL7 ORU^R01 messages

Closed

Bug

TRUNK-4018

Initial Setup (installer) sits at 100% too long before actually finishing

Closed

Bug

TRUNK-2877

Don't set password values in the UI in the installation wizard

Closed

Bug

TRUNK-2689

Some times empty demographics tab on patient dashboard

Closed

Bug

TRUNK-1

Limited number of trees in the world

In Progress

Task

TRUNK-5140

increase the size of the obs.value_complex column to be ~1000

Code Review (Post-Commit)

Task

TRUNK-5085

Merge checkstyle rules with google's

Closed

Task

TRUNK-5081

Update checkstyle maven plugin

Closed

Task

TRUNK-5080

Reorganize checkstyle

Closed

Task

TRUNK-5070

Convert xml spaces into tabs for indents

Closed

Task

TRUNK-4974

Create platform for SDK

Closed

Task

TRUNK-4962

Remove outdated UI test code

Closed

Task

TRUNK-4958

Refactor OpenmrsUtil.copyFile

Closed

Task

TRUNK-4904

Incorrect message code in Order Validator

Closed

Task

TRUNK-4870

Add Unit tests for ModuleUtil.expandJar(File, File, String, boolean)

Closed

Task

TRUNK-4863

Add github pull request template

Closed

Task

TRUNK-4856

Adding more unit test for ConceptTest and PatientServiceTest

Closed

Task

TRUNK-4855

Adding more unit test for Person.java

Closed

Task

TRUNK-4730

Verify that all relevant domain objects have changed_by and date_changed fields

Closed

Task

TRUNK-3638

Separate liquibase file into separate files per version

Closed

Task

TRUNK-3459

Implement release tests for manage modules

Closed

Sub-task

TRUNK-5002

TRUNK-324 Remove commented code about Re-write the hashcode() method

Closed

Sub-task

TRUNK-5001

TRUNK-324 Remove code comment about Eliminate unnecessary methods

Closed

Sub-task

TRUNK-4999

TRUNK-324 Remove code TODO about Should take care of the case where the user is using removable media

Closed

Sub-task

TRUNK-4998

TRUNK-324 Remove code comments about Fail if minOccurs is greater than 1

Closed

Sub-task

TRUNK-4997

TRUNK-324 Remove code comment about Add a global property that enables different behavior here

Closed

Sub-task

TRUNK-4994

TRUNK-324 Remove TODO comment and deprecate method

Closed

Sub-task

TRUNK-4992

TRUNK-324 Remove code comment about Add changedBy and DateChanged columns to table patient_identifier_type

Closed

Sub-task

TRUNK-4991

TRUNK-324 Remove TODO comments about Check patient has at least one "sufficient" identifier

Closed

Sub-task

TRUNK-4989

TRUNK-324 Remove commented code about Throw an exception if there is no location to fall back on

Closed