A Django site.
June 24, 2009
» Limiting Answers to Concept Classes and Sets


I am working on the ticket #73, model must support constraining coded answers to one or more classes. I am implementing the first option, using two properties in the answer class to keep a concept set or a concept class. After implementing this ticket we can specify which concepts are possible for a given concept as an answer by the given concept classes and concept sets, in addition to the single concepts,

June 21, 2009
» The overdue progress report

Apologies for not blogging as much as I should. I've focused on getting what needed to be done, done.

Tasks that have been completed thus far with a target milestone of using a mock Form, enable persistence of Questions and Values to the database:

  • Mock out a report form using the domain classes
  • Using the mocked up schema, generate a simple report form
  • Design the SQL Schema (for just FacilityDataValue and FacilityDataQuestion)
  • Write Hibernate Mapping files (for just FacilityDataValue and FacilityDataQuestion)
  • Write Data Access layer (for FacilityDataValue and FacilityDataQuestion)
  • Write Service layer (for FacilityDataValue and FacilityDataQuestion)
  • Refactor the rendering logic to use the JSP and write EL function(s) to check types using instanceof.
  • Allow a simple the mocked form from Week 1 to save the question answers.


Tasks that are are in progress, soon to be finished with a target milestone of removing the code used to mock up everything from the first few weeks; ability to use the saved schemas for rendering the report form:

  • Design SQL Schema for the rest of the domain classes
  • Write mappings for the rest of the domain classes
  • Support loading the previously saved values for a form/startdate/enddate/location into a page for viewing or editing
  • Write methods to save the rest of the domain classes in the data access layer
  • Write methods to save the rest of the domain in the service layer

Now that I have summarized work completed and in progress, let's explain the overall design:

  1. FacilityDataFormSchema serves as the overall representation of the report form in the system.
  2. FacilityDataFormSection is simply that, sections on the form, e.g., monitoring equipment status, stock status of vaccinations, number of people vaccinated, etc.
  3. FacilityDataFormQuestion holds metadata regarding a question.
  4. FacilityDataQuestion is the question itself; it specifies the datatype; it is subclassed for each question datatype; if not subclassed, then the question is considered to be "freetext" -- in other words: just simply a text-based question.
    1. CodedQuestion is a question that has a coded answer. This too is subclassed for each coded question datatype.
      1. StockQuestion is exactly as the name says, to track stock of items such as vaccinations. The coded answers are: "not_stocked_out","stocked_out","expired","not_applicable"
      2. BooleanCodedQuestion is a simple "yes","no","not applicable" type of thing; e.g., "Was there mobile clinic today?"
    2. NumericQuestion is a question which has a numeric answer, e.g., "Number of Adults Vaccinated."
  5. FacilityDataValue is what holds the values entered in the report forms for each question.
  6. FacilityDataReportFormData is a non-persisted class used for retrieving the answers for a specific report.

Hopefully this makes up for my lack of updates.

June 17, 2009

Dilupa Munindradasa
dilupa
Notes of Dilupa is about »
» GSoC2009 - Quartz Module Updates

There are some significant progress on the scheduler module last week.


I was able to:
  • Was able to introduce the scheduler manager page in to the module.
  • Got its back and completed (deleting schedules, Executing it now, Stop/resume features).
  • Got the View Task page running without any errors.
  • modified how date/time is shown in the view Task and manager page.
  • Fine tuned the scheduling mechanism.
  • Did some QA tests on the scheduling.
Things i couldnt get done:
  • Integrate the test cases i developed.
  • Integrate the current scheduleing service to the quartz module. (most probably we wont)
Things to do this week:
  • Should finish testing the Edit/New Task page (QA test)
  • Finalize feature list of the 3 pages with Justin.
  • Finish the View Task page completely.
  • Try to integrate openMRS Jobs, replacing the hello world dummy job.
  • Deploy quartz scheduler module to labs
  • Try to implement the following user stories
  • Allow users to delete a particuler schedule
  • Allow users to stop/resumes schedules
  • Allow users to execute a task instantly

June 12, 2009
» The long overdue progress report

This is gonna be short, sweet and to the point:

Week 1:

  1. I wrote a mock report form with 10 questions (screenshots in a later post)
  2. I then wrote up some code to render it approriately for each question type.

Week 2 (still ongoing):
  1. Designed the SQL schema, and wrote the service/database layer classes for 2 of the classes.
  2. Wrote in the functionality to save the report data to the database.


Will explain the design at a later date.

Ciao!

June 8, 2009

Harshini Gudiwada
harshini
Harshinigudiwada's Blog is about »
» New features


My module now has 3 links on the Admin page through which the administrator can

  • create a new home page and assign it to a role.
  • Edit the assigned(existing) home page.
  • Delete any homepage from the existing list.

» SVN


I have added my module to the SVN repositry. The module is “rolebasedhomepage”.

June 6, 2009

Dilupa Munindradasa
dilupa
Notes of Dilupa is about »
» Nasty Nephews :)

People may think that its so cool to become an uncle at a early stage of life. Well it kind of is. But you may get second thoughts once in a while. My nephew is almost 9 now. And im sure anyone would go nuts if they spend just a day with him. He comes to visit me once in awhile and boy... its havoc that day at home. He will run all over the house, Will dirt all the walls by trying to do "Spiderman" (its fun to watch though). He spends a lot of time showing his "muscles" to impress everyone. And guess what? im his hero (awesome). hehehehe.

He has caught the habit of playing video games at an early stage (thanks to his heroic uncle. :P ). There are like 50kinds of games he would play almost any day he would visit me. Funny how that happens cuz he comes running after me saying "uncle.. uncle.. i want to play a video game". And i find some online flash game site and loads somewhat easy game to play. ok here's how the 50 game thing works. he "tries" to play the game for 5mins and starts saying "This ones no good. Its not that i cant play it. but its boring. Please put me another game uncle...". Then i spend another 15mins trying to find a game he could possibly play. And thats a for loop which iterates infinitely until his mom comes and take him home. :D. I found out that the exception occurs in the for loop after 50 or so iterations.

But really Its fun to have a brat running around doing funny, annoying things which i used to do when i was at his age. :)

June 5, 2009
» OpenMRS Meeting in Boston

On May 26th we had an OpenMRS developers and implementers meeting in Boston at Harvard Medical School. The goal was to introduce people in the US east coast to OpenMRS, and to give developers, users and potential users a chance to meet and learn about the system. We also provided phone and Skype connections for international groups, and had 13 people from Kigali, Rwanda on the OpenMRS training course participating, along with others from Peru, Nicaragua and the US. The slides were put on Slideshare before each lecture.

We also had breakouts in the afternoon on topics chosen partly by the audience. We will add those results to the Wiki. This meeting was at short notice to take advantage of having key team members like Chris Seebregts in Boston. In future we will try to plan meetings more in advance and widen the audience as well as improve on our live presence.


Dilupa Munindradasa
dilupa
Notes of Dilupa is about »
» GSoC2009 - Quartz Module Updates

It has been a tough week i can tell you. Finding my way through OpenMRS modules took some late hours from my day, but i think i can safely say that the storm is passing. I was able to successfully integrated quartz to a module.

Things ive been doing the past week:

  • Integrated Quartz sql script to the sqldiff.xml.
  • Initialized Quartz scheduler on module startup and stopped it on shutdown.
  • Created a Form, Controller with validators for users to create schedules.
  • Successfully developed and integrated scheduling mechanism for RunOnce, Seconds, Hours, Daily to the module.
Although ive not discussed this weeks tasks list with justin. Im hoping to:
  • integrate test cases for the Quartz service which ive done in a separate webapp.
  • refactor the current implementation to work with the existing scheduler service and TaskDefinition.
  • Fine tune the scheduling mechanism.
  • Do some thorough testing through running the module.
I feel like im not updating the blog regularly. Feel a bit guilty about that but those arent without reasons too. Ill probably have to put more attention in documenting what im doing.

possible road blocks i may face:
  • My music playlist running out while working on openmrs.
  • Figuring out how to write test cases in openmrs modules.
  • Getting form details persisted inside quartz tables and retrieving them back.


Harshini Gudiwada
harshini
Harshinigudiwada's Blog is about »
» Current progress on Role Based Homepage


Hi..

I have created a module using which one can get the home pages based on the role of the user who login into the system.  Eg: if a clinician logs in into the system then he sees the ‘clinicianHomepage’ which is assigned to him.

In my module i have used an Extension point which points to HomepageExt.java and in this i over ride the getPortletUrl() method. This method returns the HomepageName associated with the user with the help of the Global propertie variable.