OpenMRS Developer Training Week 8-12 February-2010

Location

A free-of-charge developer training week will be hosted by the Regenstrief Institute at 410 W. 10th Street, Indianapolis, IN, USA, 46202

Room 1110: Monday, Tuesday, Thursday, Friday
Room 1130: Wednesday

Portions of the workshop will be webcast for those unable to attend in Indianapolis. see below for viewing information

Participation Survey

Please help us make better training materials in the future and complete this short anonymous survey if you participated in the event:

Prerequisites

  • Have an installed OpenMRS on a laptop

  • Have an installed Eclipse workspace

  • See

FAQ's

  • Where are the training locations? See this for both training locations and places to eat in the area.

  • What should I bring? See the requirements in the above section. You should bring a laptop in order to fully participate in the training. If you don't yet know enough about OpenMRS on Monday, it should be possible to learn enough on Monday to install it on your laptop Monday evening in advance of Tuesday's training.

  • Will wi-fi be available? Yes. Connection information will be available on Monday morning when you arrive.

  • Are there any handouts or advance training materials? No, there will be no official handouts for the workshop. However, if you are not very familiar with OpenMRS, you may want to see the resources for the .

  • Will food be provided? Lunch will be on your own. All participants are invited to next to Regenstrief for lunch on Monday. See the agenda for more information about lunch. Other dining options are available nearby, and vending machines are available in the building.

  • Are there any evening events scheduled? Not at this time, although it is possible that people may arrange an ad-hoc meetup or two.

Agenda

This is in early draft form and will likely change significantly.

Monday, 8 February 2010

9:00 AM

Opening Speech

  • Training overview

  • Setting of Expectations

  • Request for feedback

9:10 AM

OpenMRS Background

  • History of OpenMRS

  • Overview of OpenMRS

9:30 AM

Datamodel Walkthrough

  • Quick discussion on main sections of data models and how they relate to the webapp

10:30 AM

Technical Overview

  • API Layer vs Web Layer

    • API: Java Domain Objects

    • API: Service/business vs Database layers

    • Web: MVC Architecture

  • Modules

11:00 AM

Lunch at Buggs Temple 2nd Floor (optional, self-pay)

1:00 PM

How to use the OpenMRS API in a Unit test

  • Description of OpenMRS unit tests (which use junit)

  • Where are unit test methods?

  • A look at how the API is laid out and how to make simple calls

  • How to run unit tests

2:00 PM

Intro to Module Framework

  • Basic Module structure

2:45 PM

A basic module controller + jsp page

3:15 PM

Coffee/Tea/Diet Coke Break

3:30 PM

Workshop

  • Hands-on work with a hw assignment and getting attendees comfortable with modules

4:45 PM

After action review

Tuesday, 9 February 2010

9:00 AM

Datamodel Changes in OpenMRS Core

  • We use liquibase for incremental changes

  • Data Model Update Conventions

9:30 AM

Datamodel Changes in a Module

  • The Module Architecture uses the simplified sqldiff.xml

10:00 AM

JSP and HTML Overview

11:00 AM

Simple hibernate mapping overview

12:00 PM

Lunch at Buggs Temple 2nd Floor (optional, self-pay)

1:15 PM

How to write module controllers using annotations

2:30 PM

Using the API to Change the Database in a Module Controller

3:15 PM

Coffee/Tea/Diet Coke Break

3:30 PM

Workshop
Hands-on work with a hw assignment and getting attendees more in-depth with modules

  • Build on the RoomTemperature module: http://svn.openmrs.org/openmrs-modules/devexamples/jspexample/branches/jspexample-with-custom-object# Add a jsp page to add a new RoomTemperature object to the table.

    • Involves adding a method to the JspExampleService/JspExampleDAO

    • Involves adding a method to ExampleController.java to accept data

    • Involves adding html to a jsp page that can submit data to the new method# Add a jsp page that displays all objects in the RoomTemperature table

    • Involves adding a method to the JspExampleService/JspExampleDAO to get all RoomTemperature objects

    • Involves adding a new jsp page to list off all RoomTemperature objects

    • Involves adding a method to ExampleController.java controller class
      Solution to homework: http://dev.openmrs.org/changeset/12023

4:45PM

Wednesday, 10 February 2010

9:00 AM

Demonstration of Yesterday's Homework

9:30 AM

10:00 AM

Overview of Interfaces/Classes needed for Services

11:15 AM

API Save Handlers

12:00 PM

Lunch

1:15 PM

Intro to JQuery Framework

1:45 PM

Intro to DWR

2:30 PM

Coffee/Tea/Diet Coke Break

2:45 PM

HTML Form Entry Walkthrough

  • Creating a simple form in the HTML Form Entry Module

  • HTML_Form_Entry_Module_HTML_Reference

3:30 PM

Workshop

  • Given an example paper form, redesign it in an html form entry form

4:45 PM

Thursday, 11 February 2010

9:00 AM

Review of html Form Entry Homework from Yesterday

10:00 AM

The OpenMRS Community: Developers Conference Call
The weekly developer's conference call is an important part of the community process. The conference room will be dialed into the call and cover weekly topics. 2010-02-11 Developers Conference Call

11:00 AM

Lunch

1:00 PM

What is AOP?
How and when to use Aspect Oriented Programming in a module

2:00 PM

Advanced debugging techniques in core and modules

2:30 PM

OpenMRS Trac tickets
Description of Tickets on trac and how they are used

3:30 PM

Workshop: Patient Notes Exercise

4:45 PM

Friday, 12 February 2010

9:00 AM

Workshop: Patient Notes Exercise

10:25 AM

Overview of Workshop

11:30 AM

Lunch

1:15 PM

Whirlwind Tour of Other Things People are Doing with OpenMRS

2:00 PM

Look at a complicated module, and then dive into its code

3:00 PM

Coffee/Tea/Diet Coke Break

3:15 PM

Running the Unit Tests

3:30 PM

Authentication/Authorization

  • How are privileges defined?

  • How do API methods specify authorization requirements?

  • How do jsp pages require authorization requirements?

4:00 PM

Code Review

  • Overview of the code review process and an exmple using a current ticket with a patch attachment

4:45 PM

Ideas for Topics
  • How do the initialization filters work? -Ben 7 (30min)

  • Concept dictionary management ? -Ben 4

  • How to rebrand OpenMRS as an implementer 2

  • Intro to eclipse 2

Participating Remotely

If you are not able to travel to Indianapolis, Indiana University has secured several channels to participate remotely. Although it will not be feasible to participate in the hands-on practice activities, we will still broadcast as much of the workshop as possible to maximize your learning opportunities.

Audio Only

A US telephone conference number will be provided to listen-in to the event and ask questions. For those in other countries, User:Mjdowney will arrange a Skype link to the conference throughout the week. Please contact him on Skype to be connected to the call. Please mute your telephone/microphone/speakerphone unless and until you have a question.

  • Dial +1 812 856 7060

  • Enter the video bridge number followed by the # (pound, hash, octothorpe, square) symbol: 118 #

H.323 Videoconferencing
  • Note: On Monday, many participants who joined via H.323 did not mute their audio. This led to significant disruptions to other participants on H.323 and the online streaming video who heard music and side conversations instead of the training discussions. Do not join with H.323 unless (a) you know how to mute your system's microphone, and (b) you do so unless and until you have a question. Please do not use Ekiga clients to connect; they are not compatible with Indiana's video bridge server. If you can not meet these requirements, your best option is to use the web stream (see below) and call in to the audio number (see above) if you would like to ask questions.

Video of the presenters, participants, as well as any on-screen demonstrations and presentations will be broadcast over IU's H.323 videoconferencing bridge. Many institutions use H.323-based videoconferencing equipment in meetings rooms, such as Polycom or Tandberg. A list of open-source H.323 endpoint software is also available. See IU's H.323 connecting information for details and the IP address. The event will be broadcast in video bridge 118 throughout the week. Your H.323 software will allow you to view live video in the conference room, the PC used to display applications, and can also broadcast video from your location. In some cases, audio is not broadcast over the H.323 software and you will need to call in with the telephone number above.

Online Web Stream

Alternatively, if you are not able to run H.323 software, a web stream of the event will also be available at the URL's below. We are currently looking at alternative stream platforms, but for now you will need either Microsoft Silverlight or Windows Media Player. Moonlight is an open-source implementation of Silverlight for Linux platforms, but is has not yet been tested. VLC is working too as you can see here.