Release Notes-1.6.0 Alpha


Jan 15, 2010

Contents

This version of OpenMRS is a prerelease and not considered worthy for production use. Its function is to give users an idea of what to expect and help discover any possible obscure new bugs.
For a list of the current, stable, production-ready OpenMRS releases, see the Releases page

Whats New

Version 1.6 of OpenMRS has three major changes. (A larger list can be found below.)

  • Patients are allowed to be Users
  • Logic has been removed from the OpenMRS core and is now a required core module
  • You need Java 1.6+. (Get it here.)

A huge thanks to the 35 people that contributed code to this release: Agnor, arthurs, ayeung, ball, bmckown, bwolfe, cliff.mcintosh, dfuterman, djazayeri, dthomas, emendez, ewolodzko, hkwathome, jamesm, jmiranda, Keelhaul, Knoll_Frank, luzhuangwei, madanmohan, mkopinsky, mogoodrich, mseaton, msheley, n.nehete, nribeka, Pascal, r0bby, rarcos, rcrichton, samrajni, sunbiz, suneeth, tmdugan, upul, yatitandon

Community Input

We welcome any user to download OpenMRS 1.6 Alpha and try it out, give us feedback, and potentially bug reports on this release. We especially ask current users 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.6 data model, and report on any errors than may occur in the upgrade script.

If a new bug is found, send an email to one of the mailing lists or create a new trac ticket (registration required).

We do not recommend using this in a production environment!

Download

Download OpenMRS 1.6 Alpha

Bundled Modules

These modules are bundled with the 1.6 alpha openmrs.war download. They will be started automatically and can be removed if they are not wanted.

  • Logic 0.1
  • Reporting Compatibility 1.5.0.3

Non-Backwards-Compatible Changes for Developers

Developers take note: unfortunately 1.6 includes a few non-backwards-compatible changes from 1.5.

  • User no longer extends Person. User now has a Person property.
  • The provider property of the Encounter class has been changed from a User to a Person.
  • The method signature of DWRPersonService.getSimilarPeople() has changed. (DWR has trouble with method overloading, so we did not leave the old method as deprecated.)

Changelog

User and Implementer-visible improvements and bugfixes
#1685Add "retire" web interface for Patient Identifier Types, Relationship Type, Person Attribute and Encounter Type Managementrcrichton
#1788Dashboard Slow to Load (and error) for Patients with Many Encountersn.nehete
update module update blurb to reflect change that one is now able to upgrade a module without having to unload the existing module.r0bby
#1506Allow Patients to be Usersdjazayeri
#1825Fixing postHl7Form jsp pagebwolfe
#1980Change default message when patient identifier validation failsmseaton
Fixed user name display on scheduled task formbwolfe
#1802Changed patient.searchMaxResults to person.searchMaxResults and fixed person dao to also limit resultsarthurs
#936Added indication of inherited privileges to the role management pageKeelhaul
#1943Fixing UTF-8 characters in trunkbwolfe
#1944Fixing UTF-8 characters in trunkbwolfe
#1842Setting the UUIDs on the base data so that all implementations have the same UUIDs for the same data.bwolfe
#1929Fixed "ReportObject UUIDs are not property populated for legacy data"jmiranda
#805Committing javascript regex validation ability for addressesbmckown
#1860Added faster alternative to the regex patient identifier searchbwolfe
#559Added ability to upload a module upgrade without having to first unload the module to be replacedbwolfe
#1924Remove requirement for retire reason to be non-null, and for void reason to be non-null for objects other than Patient, Encounter, and Obs.mseaton
#1622Fixed issue where SerializedObjectDAO loses supported types between restartsjmiranda
#1349Bug fix to enable the delete program function to work on the dashboard, by giving the user a means to specify a reason.mseaton
#1820Fixing windows upgrade from 1.3 to 1.5bwolfe
Automatically create the "Form Entry" role on startupdjazayeri
#1915fixed problem where you can't change a password and a secret question at the same time.dthomas
#1737Added contraints on usernameshkwathome
#1845Fixed patient program form enrollment errorPascal
Turned off the regular expression identifier search global property by defaultbwolfe
#1830Just a small fix that eliminates a null pointer exception if an encounter has a null encounter type in FormatTag (which affects the patient dashboard).dthomas
#1735Persist rule, token and tags for the logic service to the databasenribeka
#1818Fixed adding of workflows to programsdfuterman
#1815Added check for wildcard characters in search stringbwolfe
#676Added icon next to obs that were added after the original encounter was addedsuneeth
#1811Moved concept_name_tags from demo liquibase dataset to core dataset. Added a few more breaks into the liquibase demo dataset to give the user more feedback when changesets are running.bwolfe
Readded ability to have a runtime property specify to auto update your database with new liquibase changesbwolfe
Added a placeholder initialsetup jsp page in case a user stalls on an installation and refreshes the pagebwolfe
#1796Adding in a hidden default button in initialization wizard so that the enter key defaults to Continue instead of Backbwolfe
Fixing privilege error for users changing their passwords that don't have any privilegesbwolfe
#1690Fixed performance issue on user search pagejmiranda
#1786Fixing editing of complex conceptsluzhuangwei
#1414Changed concept controller to delete concept answers if the user switches the datatype away from "Coded"bwolfe
#1430Fixed concept dictionary editing to allow deleting of sets and answersbwolfe
#1412Readding the delete button on the concept edit pagebwolfe
#1171Added ability to sort on encounter type in form entry listKnoll_Frank
#1759Fixed searching of concepts that have a specific locale in its namesbwolfe
Fixing initialization wizard to allow retries on permissions errorsbwolfe
Cleaning up errors when loading bad modules in the webapp.bwolfe
#1726Fixed concept editing form to allow adding a drug answer when the concept answer also existsbwolfe
#1727Fixing searching for drug answers on obs create formbwolfe
#1499Changed System Developer role to Administratorjamesm
#1729Added "loading" icon next to the executing changeset in the update wizardbwolfe
#1719Adding modified liquibase jar to speed up preconditionsbwolfe
#1702Added Civil status concept id to core databwolfe
#1621Enhancement to make password strength requirement configurable via global properties.mseaton
#1678Modal view of form instance data within UIdjazayeri
Fixing LazyInitializationException related to user properties on patient dashboarddjazayeri
#1677Followup to FormEntry tab fix in. Added datatable images, js, css. Fixed double vision of search box on encounter forms popup. Added last three encounters.bwolfe
#1677Form Entry tab needs to come back (i.e. adding a Form Entry tab in core)djazayeri
#1486Making the lockout per IP configurable through a global propertybwolfe
Hiding unnecessary rows in encounter form when creating a new encounterbwolfe
#1603Velocity context not getting initialized on Linux systems caused by failure to set log system class on Velocity engine properties. bmckown
#1581Increasing the number of allowed failed IP login lockouts in case openmrs is installed in a network where all users share an IP address. Fixing a the user lockout bug where users don't get locked out after the first time.djazayeri
#1158Fixing the encounter datatable on the patient dashboard to sort dates correctlyKnoll_Frank
#1585Combine Infopath and HTML Form Entry tabs. Also updating jquery to 1.3.2 and jquery-ui to 1.7.2djazayeri
#1649Added more descriptive exception message if a startup filter needs to runbwolfe
#1629Added spain name and address format. Fixed familyName layout overwrite bug.emendez
#1158Added pagination to encounters on dashboardKnoll_Frank
#1620Fixing APIException when saving a CohortSearchHistory objectbwolfe
#1331Moved Manage Locations to its own admin group Authormadanmohan
#1612Fixed date formatting to work with all known java localesbwolfe
Fixed messages in the es filebwolfe
#1606Disallowing schema editing when duplicating a formbwolfe
#1221Changed the API context startup to not run updates automaticallybwolfe
#1593Catching errors in module stoppage to make sure a module can be stopped again have a failed module loadbwolfe
#1592Added ability to have special characters in passwords againnribeka
#1374Added ability to create a date observation in the most recent observations portletball
#1584Fixed error while data exports due to missing uuidbwolfe
#1512Added ajax refresh to see progress of liquibase database updates at startupKnoll_Frank
#1190Updated initialization wizard to use ajax instead of refreshing the page when showing the progressKnoll_Frank
Prevent a property-not-null exception when enrolling a patient in a program.djazayeri
#1580If you type your password wrong, then log in correctly, the API will not lock you out after multiple login attempts in the futuredjazayeri
Fixed patient merge with two patients that are related. Fixed patient merge to only move over nonvoided identifiersbwolfe
#1573Added old mysqldiff file back into source so that the liquibase updates can (attempt to) execute it. Added more error output to update failures. Added auto focus to maintenance page username input boxbwolfe
#1571enable an option for searching anywhere within patient names to identify possible matchesmseaton
#1190Added file progress list to end of initialization wizardKnoll_Frank
#1491Adding preferred name to search result list if search hit is on a non-preferred namebwolfe
#1532Added openmrs version to query string to js and css html include so that javascript and css files aren't cached across versionsbwolfe
#862Scheduler throws exception ('Timer already canceled') when trying to restart a failed task.bwolfe
Commit patch that adds support for relationship filtering in cohort builder.djazayeri
#1516Making core modules start at startupbwolfe
Changes under the hood
#1957Error while creating new patient using fieldgen patient searchrarcos
#910Changing datatype of Concept subclass leaves orphaned row in subclass tablesunbiz
#910Taking a numeric concept and changing its datatype to text leaves a row in concept_numericsunbiz
#1939OpenmrsUtil.loadProperties doesn't handle backslash continuation of linesn.nehete
#1971Privilege for managing the scheduler page is incorrectayeung
#675Add last execution time to TaskDefinitionupul
#247encounter.encounter_type should be requiredn.nehete
#1806Fixed NPE in update filter for databases that aren't set up yetyatitandon
#1823Added junit tests for saving a ConceptSource with nullable hl7Code, required voided columncliff.mcintosh
#1982MailMessageSender does not allow for configuration of message content typemogoodrich
#1582Added dateChanged and changedBy columns to encounter tablen.nehete
#40Changing patient save requirement to force at least one _non-voided_ identifierbwolfe
#2003Modify SerializedObject and SerializedObjectDAO such that services have the ability to control how to handle serialization failures.mseaton
#1979added "org.openmrs.patientDashboard.afterLastEncounter" extension point to patientHeader.jspmogoodrich
#1874Deprecate the parseString method and introduce the parse method in the servicenribeka
#1626Pull out the logic service from trunk for 1.6 releasenribeka
Fixed PatientAttribute to allow equality if personAttributeId is null.jmiranda
Fixed ObsService.getObservations(String) to keep from returning all observations in the database.jmiranda
Fixed UserValidator to handle null void reason and null username.jmiranda
#1933Removed the quartz library from OpenMRS corejmiranda
Fixing hl7 unit test to work in dst/nondst timesbwolfe
Fixing concept name equality errorbwolfe
#1926Fixed locale changes on annotation based jsp pagesbwolfe
#1903Fixing annotations not getting processed at tomcat startupbwolfe
#1920Full support for modules with a dot in their module iddjazayeri
fixed a NPE in ConceptListItem when you have a database with incorrectly-set-up concept name taggingsdjazayeri
avoid NPE on Concept.equals((Concept) null)djazayeri
#1446Added an upper bound to the Module's Require Versionnribeka
Minor wording changes in the initialization scriptsbwolfe
#1878Fix ConceptService.getConceptByMapping to check both the name and hl7Code of ConceptSource.mseaton
Fixing Field hbm mapping to not include list of formsbwolfe
#1841Module upload throws NPE when config.xml contains messages element, but omod does not contain message.propertiesjmiranda
#1784This patch prevents NPE's in the java generated from an mlmtmdugan
#1825Fixed the postHl7Formbwolfe
#1822Followup change to the wording of the hl7 parsing methodbwolfe
#1826Changing DrugOrderValidator to allow empty drug name.dthomas
Fixing concept source and logic token foreign keys in liquibase xml filebwolfe
#1823Setting voided to not null in ConceptSource, setting hl7code to null.dthomas
#1822Moved hl7 parsing into the HL7Service so that modules can add custom handlersbwolfe
Added javadoc to openmrs version constantsbwolfe
#1457Changed ConceptSource to extend BaseOpenmrsMetadataKnoll_Frank
Adding in an NPE check for a bug found while doing a demo of how to find bugsbwolfe
#1789Fixing "searchWidget not found" error if two search widgets used on the same pagebwolfe
#1760Fix junit test for the serialization service implbwolfe
#1628Fixed equals method for PatientIdentifiernribeka
#1783Fixed lazy init exception when saving Fieldsbwolfe
#1759Changed concept name locale matching logicbwolfe
#1782Added uuid column to scheduled_task_config table to match up with expectations of TaskDefinition objectbwolfe
#1504Followup fix for mandatory modules that don't start due to spring not application context errorsbwolfe
#1746Added explicit call to the Response object in the startup filter to force text/html content typebwolfe
#1760SerializationService does not support registering serializers from multiple modulesdjazayeri
Fixing Concept.addAnswer to not throw an NPE. Fixing ability to add new concepts with non-database assigned ids.bwolfe
#1574Fixed the module startup to create web directories if they don't exist.bwolfe
fixing an edge case where logic Result.toString() was returning nulldjazayeri
#1756Fixing hibernate interceptors to work better with modulesbwolfe
Fixing NPE in refreshusercontext if user hasn't authenticated yetbwolfe
Corrected spelling of an @should on the EncounterServicebwolfe
Changed wording of @should in javadocbwolfe
#1747org.openmrs.login extension point needs to be in login portletdjazayeri
#1613Fix to prevent ClassCastException in RequiredDataAdvice.mseaton
#1734initialSetup failed on Linux due to Velocity not getting initialized.bmckown
#1698Adding javadoc comments to StatefulRule interfacebwolfe
#1698Added stateful rule interface to enable storing state of a rule and re-use it when creating a new rule instancenribeka
Various logic fixes from [7309]:[9705]bwolfe
#628Added encounter form extension pointsamrajni
#1711Changed the uuid length to 38 charactersbwolfe
#1703Moved liquibase targets to their own file. Added liquibase targets for upgrading the xml files using our liquibase-update-to-latest.xmlbwolfe
#1706Fixed validatePassword method to work without a session so that the initialization wizard can use itAgnor
#773fixing #773 (again)djazayeri
Added a unit test on PatientSetService.getPatientsHavingEncountersdjazayeri
#1527Adding more robust exclusion criteria for test classes that were accidentally compiled into an omodbwolfe
Added NPE check and log message to js/dwr concept answer searchesbwolfe
#1588Undoing change that was refreshing the authenticated user in the OpenmrsFilterbwolfe
Fixing the saving of a report schema xml objectbwolfe
#1694Fixing DWRConceptService NPEsAgnor
Fixed name and location of extension points on concept dictionary pages.bwolfe
#1699Bug fix for HibernateSerializerObjectDAO as described in ticket #1699mseaton
#1695Bug fix for ticketmseaton
#1404Fixed hl7 ORUR01 handler to recognize new 99NAM for hl7 sextuplets. Adding ability for parsing messages with concept ids from other concept sources.bwolfe
#1689Fixing openmrs.js file to ignore the question mark when doing an import of a javascript file into javascriptbwolfe
non breaking change -- if(c.isRetired() == false) is equivilent to: if(!c.isRetired())r0bby
removing dashes from portletUUID so it may be used as part of a function name.djazayeri
#1681Changed PersonName to extend BaseOpenmrsData instead of BaseOpenmrsMetadatabwolfe
#1588LazyInitializationException: could not initialize proxy - no Sessionjmiranda
#1462Adding precondition to parent_location liquibase update changesetbwolfe
Fixing NPE when updating concept wordsbwolfe
Removing bad import so test can compilebwolfe
#1667most concept object's 'name' methods shouldn't return voided namesdthomas
#1649Followup fix to the descriptive message for "initialization needed" errors so that spring initializes when the wizard is donebwolfe
#1675Implementation of stubbed CohortDAO methods.mseaton
#1624Removing all xstream classes. They have been moved to the serialization.xstream modulebwolfe
#1668Removing the default serializer option and replacing it with a global property.mseaton
#1616Fix to prevent issues with infinite recursion in RequiredDataHandlermseaton
Fix to ProgramWorkflowTest method names to match convention of starting with shouldmseaton
#1673Fix to equals method for Program-related classes.mseaton
#1631AbstractFieldGenHandler should implement FieldGenHandler.mseaton
#1651Fixed hl7 util class date parsing of dates in a different daylight savings time. Added a few unit tests around the HL7Util class msheley
#1654Allow modules to add new serializers to SerializationServiceluzhuangwei
Changed jquery reference to new version in initialization and update filtersbwolfe
#1653Fixed columns that were given a datatype of "double(22,0)" by liquibase back to just "double"bwolfe
#1390Added calls to module servlet initialize and destroy. Added optional shorter module servlet url of /openmrs/ms/servletname instead of /openmrs/moduleServlet/moduleid/servletname.bwolfe
#1588Fixed - LazyInitializationException: failed to lazily initialize a collection of role: org.openmrs.User.userProperties, no session or session was closed. NOTE: Not the ideal solution, but I needed serialization working for the reporting module by today.jmiranda
Refixing portlet controller parameters broken in [8929]bwolfe
Added javadoc comment about the portletUUIDbwolfe
#1618Removed the parameters from the cached modelbwolfe
#1588Adding a call to refreshAuthenticatedUser in context tests to avoid a lazy initialization exception in unit testsluzhuangwei
#1533Removed voided patients from results of PatientService.getPatientIdentifiersnribeka
#1588serialization: add a unit testluzhuangwei
#1527FileNotFoundException thrown for test class during module deployment.jmiranda
Added clearer unit test assertion comment to modules.openmrs.org testsbwolfe
Switched escaped characters to utf-8 characters in pt messages file. Fixed messages in the es file. Set encoding to utf-8 for all messages files. Set eclipse encoding to utf-8 for messages files.bwolfe
#1561Fixed ConceptWordUpdateTask to actually finish successfullybwolfe
#530Changed PersonAttributeType.sortWeight to a Double. Fixed unit test problemsbwolfe
Fixed javascript loading from the new web-inf location in the startup filtersbwolfe
#1548Changing liquibase precondition checks from using the old database_version global property to normal liquibase checksbwolfe
#1591Moved web/scripts/* to web/WEB-INF/view/scripts/* to get rid of stack overflow exeptions due to recursive file openings.bwolfe
Removed some messages.properties that were accidentally recommitted in [8127]bwolfe
#530Added sort weight to person attribute types. Converted person attribute type list controller to spring annotations based controllerewolodzko
#1559Fixed liquibase-generate-sql ant targetbwolfe
#1142Fixed some deprecated api calls and javadocs referencesmkopinsky
Added default status to hl7 queue messagesbwolfe
Fixed uuid saving on hl7 queue/error/archive messagesbwolfe
#1587Fixing portlet extension point tags that use el syntaxbwolfe
Added ant target to generate sql script from liquibase xml filesbwolfe
Changed deprecated create* and update* service methods to go through the context and service so that AOP can happen correctlybwolfe
Fixed hl7 queue, error, and archive objects to be able to save uuidsbwolfe
Fixed old update-to-latest sql file to not throw error if column doesn't exist. Fixed core global property setting to ignore duplicates. Fixed custom liquibase changeset that executes the old sql file to obey the exit valuebwolfe
#1579Fixing global property nonuniqueexception at startup after an upgradebwolfe
Removed references to the formentry module from the liquibase demo data setbwolfe
#1578Fixing cascade of save to fields when saving a form fieldbwolfe
#1504Added ability to mark a module as mandatory. Added getPropertyBySuffix to administration service. Added StartupErrorFilter to display a stack trace to the user if an error is thrown during startup (like a mandatory module isn't started). Added lock icon in the web interface next to modules that are not able to be stopped/startedbwolfe
#1505Adding the ability for a module to insert a hibernate interceptor. See /openmrs-modules/devexamples/interceptorexample for a module that implements itbwolfe
Added user_id to error message to help identify errorsbwolfe
#1568Fixing nonuniqueobjectexpception at module startupbwolfe
#1567Fixing NPE on RegimenPortletControllerbwolfe
#1514Split the uuid liquibase changesets into individual callsbwolfe
Reapplying utf8 fix for storing runtime properties after the wizardbwolfe
Adding @shoulds and tests for getXyzByUuid(String) methodsdjazayeri
#1559Fixed liquibase-generate-sql ant target. Renamed target to liquibase-generate-offline-sql-diff-mysql to be a little more descriptivebwolfe
Followup fix to add cglib to the ant api compile classpathbwolfe
#1523Upgraded xstream to 1.3.1luzhuangwei
#1521Merged part of serialization branch to trunk so that serialization of cglib proxies and hibernate collections works correctly.luzhuangwei
#1529Added "create" and "update" as triggers for the SaveHandlers so that calls to deprecated methods still work. Fixeed error on creating relationship due to missing uuidbwolfe
#1531Fixing patient merge function due to uuidsbwolfe
#1547Fixed implementation id uuid error upon set. Cleaned up implementation id unit testsluzhuangwei
Removed check for auto_update_database runtime propertybwolfe
#1539adding a comment for storeProperties and loadProperties methods in OpenMRS util saying that they won't be needed once openmrs is migrated to java 6. Regular properties methods will take reader/writer objects as arguments.dthomas
#1539Adding close() for potentially hanging inputStreams in finally blocks associated with new method for reading properties files in UTF-8dthomas
Fixing load properties method committed by dthomas in [8154] to allow for escaped colons and equal signs in properties file valuesbwolfe
Adding examples of ConceptSource, ConceptProposal, and ConceptStateConversion to standardTestDataset.xmldjazayeri
Fixing return type of ConceptService.getConceptDescriptionByUuid(String)djazayeri
#1540Fix default view resolver to work with Spring 2.5's convention-over-configurationdjazayeri
#1539applied new utf-8-safe methods to instances of Properties.load and Properties.store in trunk (that weren't in 1.4).dthomas
#1538character encoding of french and spanish messages.properties to utf-8dthomas
#1525Authorization issue during initial setup related to setting the implementation IDjmiranda
#1518Fixing TestUtil convenience method output (and reformatted the method comment)luzhuangwei
#1376Fixed NPE in concept name description methodbwolfe
Modified the update statement to skip over concept word tables that don't have the primary key yetbwolfe