Platform 2.1.0-alpha Release Notes
Release Date: Friday, March 3, 2017
This version of the OpenMRS Platform 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:
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 line of the OpenMRS Platform. Read more about this means in the (future) release notes for the beta, or final release.
Download
Get it at https://sourceforge.net/projects/openmrs/files/prereleases/OpenMRS_Platform_2.1.0_Alpha/
Feedback Welcome!
As always, we look forward to getting your feedback about this release. Share your thoughts on http://talk.openmrs.org.
For example there are a couple of significant features that still need significant work before making it into the final release, such as:
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
Ticket Statuses at the time of the Alpha release
Issue Type | Key | Summary | Status |
New Feature | TRUNK-425 | Use Hibernate Search with Apache Lucene for Patient Searches | Closed |
New Feature | TRUNK-1682 | Add maven module for checkstyle | Closed |
New Feature | TRUNK-1916 | Code coverage and Test report for OpenMRS | Closed |
New Feature | TRUNK-2004 | Ignore blank person addresses on the patient forms | Closed |
New Feature | TRUNK-3675 | Cache results from getSearchLocales() | Closed |
New Feature | TRUNK-4668 | When a module is started, all its dependent modules should be started | Closed |
New Feature | TRUNK-4696 | SaveOrder method should throw more meaningful exceptions | In Progress |
New Feature | TRUNK-4928 | Remove code TODO about interface OpenmrsMetadata should support localized names and descriptions | Closed |
New Feature | TRUNK-4930 | Remove a TODO in the code about AdministrationService.getPresentationLocales() return type | Closed |
New Feature | TRUNK-4931 | Remove a TODO in code about notifying on global property name changes | Closed |
New Feature | TRUNK-4933 | Create pull request to remove TODO comments from core code | Closed |
New Feature | TRUNK-4935 | Remove a TODO in code about refactoring ProgramWorkflowService.getPatientPrograms() | Closed |
New Feature | TRUNK-4936 | Add ConceptSource.uniqueId | Closed |
New Feature | TRUNK-4941 | Add ModuleUtil.isOpenmrsVersionInVersions() | Closed |
New Feature | TRUNK-4947 | Add ConceptService.getConceptSourceByHL7Code | Closed |
New Feature | TRUNK-4971 | Add caches programmatically | Closed |
New Feature | TRUNK-4975 | Making Family name as Optional | Closed |
New Feature | TRUNK-4976 | Support obs.interpretation and obs.status, aligned with FHIR | Design |
New Feature | TRUNK-4980 | Enable hibernate second level cache for org.openmrs.Privilege | Closed |
New Feature | TRUNK-5008 | Speed up and simplify Lucene concept search | In Progress |
New Feature | TRUNK-5012 | Ability to limit lucene patient search by identifier to a particular identifier type | Closed |
New Feature | TRUNK-5077 | AbstractHandler#purgeComplexData(Obs) should return true when file is missing from disk | Code Review (Post-Commit) |
New Feature | TRUNK-4906 | Expanded cohort details | In Progress |
Story | TRUNK-4943 | Failing to start the server due to CacheManager issue | In Progress |
Story | TRUNK-5010 | In some cases it should be possible to merge patients even if both have active orders | Closed |
Bug | TRUNK-2877 | Don't set password values in the UI in the installation wizard | Closed |
Bug | TRUNK-4018 | Initial Setup (installer) sits at 100% too long before actually finishing | Closed |
Bug | TRUNK-4093 | Forms should not be required in HL7 ORU^R01 messages | Closed |
Bug | TRUNK-4539 | Object validation should enforce maximum length based on column length constraints in the DB | Closed |
Bug | TRUNK-4678 | ModuleActivatorTest shouldStopDependantModulesOnStopModule fails randomly | Closed |
Bug | TRUNK-4720 | Encounter search will not match on id unless it contains digits | Closed |
Bug | TRUNK-4776 | Incorrect Global Properties for CIEL | Closed |
Bug | TRUNK-4813 | SQLException during the initial setup on MySQL 5.7 | Closed |
Bug | TRUNK-4848 | NullPointerException at org.openmrs.web.WebUtil#normalizeLocale() | Closed |
Bug | TRUNK-4849 | NullPointerException at org.openmrs.util.Format#format(Date, Locale, Format.FORMAT_TYPE) | Closed |
Bug | TRUNK-4850 | Module.getExtensions() does not call Module.expandExtensionNames() appropriately | Closed |
Bug | TRUNK-4851 | Error in unit test of PatientServiceTest class | Closed |
Bug | TRUNK-4865 | Fix TODO in HL7ServiceImpl#resolveUserId | Reopened |
Bug | TRUNK-4867 | Do not allow person/patient to have death date before birth date | Closed |
Bug | TRUNK-4869 | Should not be able to set birth or death dates later than present date | Closed |
Bug | TRUNK-4875 | Add unit test for findPossibleValues method of Concept Class | Closed |
Bug | TRUNK-4879 | NullPointerException at org.openmrs.api.customdatatype.datatype.ConceptDatatype#doGetTextSummary | Closed |
Bug | TRUNK-4902 | HibernateOrderDAO exception uses wrong message code | Closed |
Bug | TRUNK-4912 | BaseOpenmrsData creator, dateCreated, uuid should be not updatable | Closed |
Bug | TRUNK-4913 | Concept.hbm.xml not-null on optional changedBy | Closed |
Bug | TRUNK-4915 | Concept validator should require datatype and conceptClass fields | Closed |
Bug | TRUNK-4918 | Remove unused classes and files | Closed |
Bug | TRUNK-4922 | ConceptDAO filters concepts only if results were found by fullTextQuery | Closed |
Bug | TRUNK-4923 | Remove TODOs from code about addAttribute() needs validation | Closed |
Bug | TRUNK-4925 | Copy patient specific attributes on Patient() constructor | Closed |
Bug | TRUNK-4926 | Remove a TODO in code about PatientIdentifierType.toString() returning a more "debug-worth" string | Closed |
Bug | TRUNK-4927 | Remove a TODO in code about config parameter from DatatypeService.getDatatype | Closed |
Bug | TRUNK-4937 | Saving a visit should not cascade to encounters associated to it | Closed |
Bug | TRUNK-4938 | ConceptService.getConceptSourceByName privilege annotation wrong | 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-4940 | Obs validator validates for empty value in parent obs which is to be voided | 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-4949 | Patient Merge - HibernatePatientDAO - getDuplicatePatientsByAttributes - Not performing on large database | Closed |
Bug | TRUNK-4957 | Code cleanup: remove duplication in getApplicationDataDirectory | Closed |
Bug | TRUNK-4959 | Clean Hibernate session after applying liquibase changesets | Closed |
Bug | TRUNK-4965 | Encounter with complex obs throws NullPointerException on save | Closed |
Bug | TRUNK-4967 | NPE in HibernateConceptDAO.isConceptNameDuplicate | Closed |
Bug | TRUNK-4968 | Non empty database should not fail when finishing database setup | Closed |
Bug | TRUNK-4970 | Obs retrieval from the encounter should maintain the same order in which it is added | Closed |
Bug | TRUNK-4973 | Saving Existing Obs will not update formNamespaceAndPath | Closed |
Bug | TRUNK-4977 | ImageHandler.saveObs(Obs) to close outfile | Closed |
Bug | TRUNK-4978 | Another CacheManager with same name 'apiCache' already exists in the same VM | Closed |
Bug | TRUNK-4984 | TextHandler does not work | Closed |
Bug | TRUNK-5005 | ModuleFactoryTest Error | Closed |
Bug | TRUNK-5009 | Set HttpOnly for JSESSIONID cookie | Closed |
Bug | TRUNK-5016 | Weak password message is not translated while the exception is raised | Closed |
Bug | TRUNK-5017 | Encounter.removeProvider fails if same provider has already been removed once before | Code Review (Post-Commit) |
Bug | TRUNK-5018 | defaultLocale property of User is not updated to Context when the user is logged in | Closed |
Bug | TRUNK-5019 | Error Scenario in Obs Save : New child Obs not saving when entire Obs group is updated | Closed |
Bug | TRUNK-5021 | AllergenType includes some invalid options | Closed |
Bug | TRUNK-5024 | Accepting more characters for observation value of type Text | Closed |
Bug | TRUNK-5030 | Collection.isEmpty() should be used to test for emptiness | Closed |
Bug | TRUNK-5035 | Use Boolean.valueOf to test strings | Closed |
Bug | TRUNK-5036 | HibernateConceptDAO.getConceptByName() method logs incorrect warning message | Closed |
Bug | TRUNK-5038 | Replace StringBuffer with StringBuilder | Closed |
Bug | TRUNK-5044 | Use platform agnostic newlines in string formatting | Closed |
Bug | TRUNK-5056 | Use apache StringUtils in OrderSetServiceImpl | Code Review (Initial) |
Bug | TRUNK-5058 | Extract private method in ObsServiceImpl.saveExistingObs | Closed |
Bug | TRUNK-5071 | Fix performance of get concepts by mapping | Needs Assessment |
Bug | TRUNK-5075 | EncounterTest random failures | Closed |
Bug | TRUNK-5078 | Remove velocity.log files | Closed |
Bug | TRUNK-5079 | Fix HL7UtilTest failure on OpenJDK 7 | Closed |
Task | TRUNK-3638 | Separate liquibase file into separate files per version | Closed |
Task | TRUNK-4730 | Verify that all relevant domain objects have changed_by and date_changed fields | Closed |
Task | TRUNK-4855 | Adding more unit test for Person.java | Closed |
Task | TRUNK-4856 | Adding more unit test for ConceptTest and PatientServiceTest | Closed |
Task | TRUNK-4863 | Add github pull request template | Closed |
Task | TRUNK-4870 | Add Unit tests for ModuleUtil.expandJar(File, File, String, boolean) | Closed |
Task | TRUNK-4904 | Incorrect message code in Order Validator | Closed |
Task | TRUNK-4958 | Refactor OpenmrsUtil.copyFile | Closed |
Task | TRUNK-4962 | Remove outdated UI test code | Closed |
Task | TRUNK-4974 | Create platform for SDK | Closed |
Task | TRUNK-5070 | Convert xml spaces into tabs for indents | Closed |
Task | TRUNK-5080 | Reorganize checkstyle | Code Review (Post-Commit) |
Task | TRUNK-5081 | Update checkstyle maven plugin | Closed |
Task | TRUNK-5085 | Merge checkstyle rules with google's | Code Review (Post-Commit) |
Sub-task | TRUNK-4989 | TRUNK-324 Remove commented code about Throw an exception if there is no location to fall back on | Closed |
Sub-task | TRUNK-4991 | TRUNK-324 Remove TODO comments about Check patient has at least one "sufficient" identifier | 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-4994 | TRUNK-324 Remove TODO comment and deprecate method | Closed |
Sub-task | TRUNK-4997 | TRUNK-324 Remove code comment about Add a global property that enables different behavior here | Closed |
Sub-task | TRUNK-4998 | TRUNK-324 Remove code comments about Fail if minOccurs is greater than 1 | 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-5001 | TRUNK-324 Remove code comment about Eliminate unnecessary methods | Closed |
Sub-task | TRUNK-5002 | TRUNK-324 Remove commented code about Re-write the hashcode() method | Closed |