A Django site.
May 13, 2008

News Blog
blog.openmrs.org
OpenMRS News is about »
» 2008 OpenMRS Implementers Meeting

OpenMRS Implementers Meeting - 17-20 June 2008 – Elangeni Hotel, Durban, South Africa.

On behalf of the OpenMRS community and our funders, the Canadian International Development Research Centre (IDRC), the Rockefeller Foundation, the World Health Organization, the Fogarty International Centre, National Institutes of Health, USA, and the South African Medical Research Council we invite you to the OpenMRS Implementers Meeting from 17-20 June 2008 at the Elangeni Hotel, Durban, South Africa.  The Meeting will be held in association with the biannual Health Informatics in South Africa Conference (www.hisa.co.za) and the Open Source Healthcare Alliance (Africa Chapter).

Prospective attendees should complete the registration form on the HISA web site (http://hisa.airwave.co.za/?display=registration&heading=Registration).   Please enter the word `OpenMRS’ in the space reserved for the SAHIA Membership Number.

A satellite meeting devoted to open source mobile (PDA, Cell phone) health application development and mobile health data collection, hosted by the OpenROSA consortium, will be held on Monday 16 June 2008 at the same venue.  A limited number of places are available and prospective attendees should contact the organizer, Dr Chris Seebregts (chris.seebregts-at-mrc.ac.za) or the meeting administrator, Anthea van Blerk (anthea.van.blerk-at-mrc.ac.za), directly, providing details of the applicant, organization, contact details and reason for wanting to attend.

The Full Programme for both events is still being finalized.  However, an interim version is available on the conference web site and updates are published from time to time.  If you would like to present an existing OpenMRS implementation or a requirement at the meeting, please contact the organizer, Dr Chris Seebregts (chris.seebregts-at-mrc.ac.za).

The meeting will include many of the core developers of OpenMRS and representatives from the main implementation sites and is a great opportunity to share experiences of implementing OpenMRS and participate in the design of future applications of the technology.  The meeting will have significant technical content including a developer codefest and interoperability workshop that will include other open source health software.  There will be ample opportunity for existing implementers to advance their knowledge of OpenMRS and learn advanced techniques as well as for new implementers to get a jump start on implementing OpenMRS.

Key topics to be covered include:

  • Implementation of OpenMRS and HIV patient and treatment management systems in African developing countries
  • New technical developments including OpenMRS at the hospital and enterprise level, interoperability with other health information system applications and mobile data collection systems
  • Design and development of mobile data collection applications using OpenMRS and open source form editors
  • OpenMRS technology training (concept dictionary development, installation and deployment, forms development etc)

Who should attend

  • Existing and new implementers of OpenMRS and electronic medical record systems
  • Developers of health data collection applications
  • Mangers of health facilities with a requirement for data collection
  • Open source developers

A limited amount of funding is available to assist with the travel and accommodation costs of existing or prospective OpenMRS implementers from Africa or other developing countries who do not have institutional funding. Please send details of the applicant, organization, contact details and a motivation for why you want to attend this meeting including details of any existing or planned OpenMRS Implementation and e-mail to Anthea van Blerk (anthea.van.blerk@mrc.ac.za).

Contact details
Anthea van Blerk
E-mail: anthea.van.blerk-at-mrc.ac.za
Tel: 27 21 938 0851

Dr Chris Seebregts
E-mail : chris.seebregts-at-mrc.ac.za
Tel: 27 21 938 0318

Biomedical Informatics Research Division, e-Health Research and Innovation Platform, Medical Research Council, Cape Town, South Africa

May 12, 2008

News Blog
blog.openmrs.org
OpenMRS News is about »
» OpenMRS 1.3.0 RC1 Released

OpenMRS 1.3.0 Release Candidate 1 has been released. This release adds a number of new features and a few bug fixes. See the the release notes for more information. Before this is turned into an official release there will be some changes and clean up to the underlying API.

It can be downloaded from http://download.openmrs.org.

May 11, 2008

Kevin Peters
KevinPeters
Google Summer of Code 2008 is about »
» Getting Familiar with BIRT ODA

To really get familiar with an Eclipse ODA, I decided to go through the three part "ODA Extensions and BIRT" series by Scott Rosenbaum and Jason Weathersby. It is not publicly linked but can be accessed here by doing some registration. The tutorial is spread across three parts in volume 8, 9, and 14 of the Eclipse magazine.

The end result of the ODA is the ability to use Google Spreadsheets as a data source. This is particularly appropriate for me because I am wrapping up a big networking project where we have been storing the simulation results in a Google Spreadsheet. The project involves the effects of node density on packet delivery ratio for three different wireless routing protocols.

Going through this ODA guide exposed me to Eclipse plugin and ODA concepts and terminology which will be helpful for this project. With respect to ODA, a simple but important point seems to be that of separating design and runtime for the ODA. The first part of the article mainly focuses on the runtime, the second part with the design time (GUI), and the third part with adding logging, optimization, data types, and parameters.

I think the most valuable lesson I learned was with troubleshooting an ODA. Setting up the Logger for the ODA was crucial to solving a snag I ran into. I had the piece of the ODA working that identifies all the user's spreadsheets and then allows you to drill down and select an individual sheet for the query. However, the data preview kept failing with a CannotExecuteStatement error. Well, needless to say, this generic error didn't help identify where the root cause of the problem was. Looking into what the ODA was logging out showed it was throwing a com.google.gdata.util.ServiceException exception. A few alterations to the ODA and I could see the entire stack indicating it was throwing a com.google.gdata.util.InvalidEntryException exception (extends ServiceException) which typically indicates a bad or malformed request. The final step was to log out the actual query that was being made and I could see that the problem was that the filterClause data set parameter was defaulting to 'dummy default value'. Changing this to null allowed the data preview to work. See the image above that shows the node density and delivery ratio data from my project spreadsheet.

The next thing I am going to do is get, build, and become familiar with the OpenMRS ODA. I've also started adding links that are useful to this project to the right navigation area of this blog.

May 8, 2008
» Patient Matching, The Second Step


I had another discussion last Tuesday with Shaun Grannis and James Egg and we think the discussion went really well. This time I didn’t ask too much silly questions hehe … We clarify some more on what we want to do with my first project. There are couple of issues that we focus on, such as how to to propagate the u values from the random sampling result to the EM analysis process.

After doing some digging, I found out that the u value is saved in the MatchingConfigRow object  in the non-agreement property. At the end of the random sampling calculation, this non-agreement  property will be assigned with the result of the calculation. Now we already have the u values from the random sampling process. But how do we propagate this u value to the EM analysis process. Dig some more then …

Well, apparently the EM analysis also take MatchingConfig object as the parameter which contains all above MatchingConfigRow. So, now we need to tell the EM analysis process to use this value when the user want to pick to use random sampling. We need to put a switch then to let know the EM analysis which value to be used, some default value or the values from the random sampling process.

Another thing that we discuss in the phone was connecting this process to the Record Linker GUI. Arghhh, I’m not good at GUI programming. I just don’t have the sense of arts to create a good GUI. But, I have to give it a shot hehe …

Some term explanation:

  • Record Linker is the name of the program that I will work on. One of the capability of the program is to combine records from different sources using statistical analysis on those records.
  • MatchingConfig is an object that will store the parameter that will be used for analyzing those records. There are lots of parameters that need to be define, for example where to get the records, what fields can be found in the records etc
  • MatchingConfigRow is an object that will store the options to match each column in the records. These parameters for example, the algorithm that will be used for the matching process. MatchingConfig object contains series of MatchingConfigRow denoting that a single records will contains many columns in it.
  • The random sampling and EM analyzing process will take this MatchingConfig object as their process parameters. This MatchingConfig will be shared by the two process to propagate the result from random sampling to EM analyzing.

Some fact that I learn:

  • When the records are coming from file, there are a few step that need to be done before the file can be analyzed. The file are chopped to only include fields that will be used in the analysis process. After the file is chopped, the file is sorted using the operating system built-in sort function on the blocking fields.
  • Let’s keep some fact for the upcoming posts hehe …

Any question? I hope I didn’t miss anything …

May 6, 2008

Robby O'Connor
RobbyOConnor
Rob's Musings is about »
» Posting code made easier (for everybody else reading your blog!)

I've noticed something while reading my daily blogs, a lot of code is just unreadable because most blog systems (blogger looking at you), screw up indentation, unless you wrap it in a pre tag (opening and closing are both required. This makes it readable for your readers! I've left comments on the blogs that didn't know this, and now they do.

This message is primarily for the Google Summer of Code students, but is useful to the programming community as a whole. When you post code, wrap it in a pre tag and be sure to close them when your code example is complete.

May 5, 2008

Kevin Peters
KevinPeters
Google Summer of Code 2008 is about »
» OpenMRS Fired Up and Running on the Laptop

I finally have a little breathing room from my huge school project and wanted to setup OpenMRS on my laptop. I basically followed the steps from http://openmrs.org/wiki/Step-by-Step_Installation_for_Developers and got things up and running. Basic stuff about the versions of the various software I setup:

  • Fresh install of Eclipse 3.3.2 and setup Subclipse 1.2.4. Running Java 1.6.0_05-b13 but set compliance level to 1.5.
  • Installed MySQL 5.0.51b and configured as a multifunctional db with 20 concurrent connections. Decided to make UTF8 the default character set.
  • Installed the MySQL GUI tools so I could easily look at the db model if required.
  • ant 1.7.0
  • Tomcat 6.0.16

To make sure things were all working correctly, I made my self a patient in the system:

Alright, back to running network simulations for school. Only 10 more days!

» ReviewBoard for OpenMRS GSoC 2008

Thanks to the generous folks at Review Board, OpenMRS has the opportunity to try out Review Board for performing code reviews for our GSoC projects. Students can download post -review (a python script) and submit changes for review simply by issuing the command “post-review” within the root of their local copy. Mentors can review the [...]

May 4, 2008
» Cleaner UI Up and live

Well after some work and crunching I have managed to get the new UI Idea up onto the live link (http://www.forxdesign.co.za/ox-designer/). Due to some recent changes in the GWT-dnd library there seems to be the possibility to removet the bottom "pallet" where the widgets are dropped on creation. I will be looking at changing this as well as refining the click-properties panel of each widget. I will either be adding an "edit" link or a context menu tag (right click - my preference)

May 1, 2008

Mohammad Shahiduzzaman
Shahid
Life of a Maverick(!?) II is about »
» Me, Google Summer of Code 2008 and OpenMRS














I have been accepted in Google Summer of Code 2008 program for working in a project of OpenMRS. This summer I will be working to create a Patient Note Writer module which will allow to add rich text observations in appropriate places/pages of the OpenMRS application. OpenMRS is an open source medical record system framework for developing countries. Its always nice to get accepted in programs like summer of code and its more nice to work for an Organization with a great cause. Another coincidence is that by profession I also work in software development related to the health care domain. So I am expecting an exciting summer with OpenMRS. I am also hoping to see OpenMRS deployed in Bangladesh in the future.

April 30, 2008
» Patient Matching, The First Step


My first phone discussion about my project with my mentor, Shaun Grannis and James Egg, went well. Shaun and James explain to me about the project in details and I think the project is really interesting. I made a couple of stupid questions that is not related to the project though, sorry for that Shaun and James hehe …

My first project is to implement a fully functional random sample analyzer that calculates the rate of random agreement among corresponding pairs of records between two data sources. This rate value will replace the u rate, field agreement rate among pairs that are truly non-matched, that come from the Expectation Maximization analyzer. To get a better overview about linkage process and rationale behind the process you should read this publication about record linkage. If you want to know more about the Expectation Maximization algorithm you can read the wiki or some other journals and publication.

The process for generating u value for each column are as follows:

  • Generate two arrays of Record with the desired size of maximum sampling size
  • Take one Record from each array at a time and do the following:
    • For each demographic data in the Record, match their value using selected String matching algorithm (Jaro-Winkler, Levenshtein, Longest Common Substring or Exact Match)
    • If the value from both Record match each other, then increment match rate of current demographic data.
  • Do over above process until all record have been paired and examined
  • Calculate the u value for each demographic data and set the new u value to the MatchConfig object.

I still need to dig more about the first process and see how each datasource is read and converted into Record object. What do you think about the above process? Did I miss anything?