OpenMRS Planet

August 22, 2017

Jude Niroshan

Google Summer of Code with OpenMRS

OpenMRS is an open source community driven software which can be used in clinical environments(specially for resource constrained). It has many functionalities and it is widely used across millions of users. As there are many users, product has different variants for different use cases. Typically those are known as distributions. OpenMRS keeps a general purpose distribution called Reference Application. This distribution comes with a modern UIs and most essential modules which needs to have for any clinic to manage the work.

It was suggested that to include reports which are out of the box for Reference Application which gives a better picture about the system data. So, this idea has turned out to be a Google Summer of Code project in 2017.

Project:

Built-in reports for Reference Application

Overview:

Project Goals:

  • Define reports inside the OpenMRS server
  • Access those reports through Reporting REST API
  • Create a new Open Web App
  • Visualize Data through charts

Basic Reports

  • Number or Visits
  • Number of Patient Registrations
  • Number of Admissions/Transfers/Discharges per service area
  • Number of Visit Notes
  • List of Diagnosis’s made and quantity
  • List of Providers (grouped by active/retired)
  • List of Users (grouped by active/retired)
  • List of new Patient Registrations
  • Patient Visit Report

Implementation in brief

Before starting any work, knowledge about the reporting module is essential to this project. The best time for this was the Community Bonding period. Within this period, basic reports were created by simply using the reporting module. This is purely a functional task which involved no coding work. This led the developer to get a clear picture of the existing module functionalities and how it should be used in order to achieve the project goals.

This was communicated in the first meeting with the mentors.

First meeting with GSoC mentors

Defining reports inside the server would give a clear idea on what needs to be achieved. Therefore, development work was started by defining the reports inside reference application module. Once the module has deployed into a OpenMRS server, those defined reports has to be created automatically. It was realized that those report definitions actually needs to resides within the Reference MetaData module rather than Reference Application module. So, those developments were moved to this module.

Implementing reports in Java — OpenMRS

Server side commits — ReferenceMetaData module:

Client side — Open Web App:

Once this has completed, it was time to create a new Open Web App to access those reports and display them with rich graphical interface. This new web app makes calls through reporting REST API in the OpenMRS server.

JudeNiroshan/openmrs-owa-built-in-reports

Problems faced while development:

There was a build problem I was facing while implementing the unit tests.

Implement a report inside a .omod (Build Error)

I have spent some weeks struggling on getting the created_date into a cohort definition. Finally with the help from Mike Seaton I was able to find a solution.

how to get date_created as a data definition [solved]

When I was fetching the report data through Reporting REST API, I was facing some other problems to get the proper report data.

Fetching a report to OWA through Reporting REST API

Passing Location as a parameter to some of my reports through Reporting REST had an issue. My mentor Rafal helped me to get through this problem.

How to pass Location object from OWA to reporting REST API

Basic Reports:

These are the report interfaces which are implemented inside the openmrs-owa-built-in-reports

<<report screenshots will be attached here>>

Weekly blog posts:

OpenMRS talk thread:

Since the day I decided to work on this project and being selected for Google Summer of Code 2017, all things can be tracked down in this thread post:

[GSoC-2017] : Built-In Reports for Reference Application

I would like to take this moment for say a big thanks to my mentor Rafal Korytkowski who gave me this wonderful opportunity to become a GSoC student and work on this cool project.

Also special thanks goes out to Akshika Wijesundara who supported me in lot of ways to get into this position. Without him, I wouldn’t have the privilege of becoming a GSoC student.

by Jude Niroshan at August 22, 2017 07:35 AM

It’s great work, and you have completed everything!

It’s great work, and you have completed everything! This is really helpful for future GSoC students.

by Jude Niroshan at August 22, 2017 07:02 AM

Chanuka Wijayakoon

GSoC 2017 With OpenMRS – Operation Theater Module Workflow Enhancements

It’s a little hard to think 12 weeks have passed already. But as they say, all good things must come to an end. So goes Google Summer of Code 2017 with OpenMRS. This summer, I worked on the Operation Theater module to bring it up to speed with 2017. The project had 2 main targets. …

by merovingienne at August 22, 2017 05:21 AM

Ayush Goyal

GSoC Week- 12

So this is the final week of GSoC, the time was amazing I learnt a lot of new things and my coding skills improved lot. I was quite busy at the end due to college and internship season but still I managed to work it out.

Last week I worked a lot. I tested the app in every possible way to find bugs and fix them at the earliest. I also added somore features and started writing my final report too.

by Ayush Goyal at August 22, 2017 12:39 AM

August 21, 2017

Jai Tatia

WEEK 11 [16th August – 22nd August]

This was the final week of GSOC before the evaluation week begins. For this period i added a feature where clicking on a tag redirects a user to a page which lists all patients with that tag.

Screenshot from 2017-08-22 00-48-33

This week will mainly be spent on cleaning up the code, getting rid of any bugs and completing the documentation.


by jtatia at August 21, 2017 07:21 PM

Nipun Thathsara

Refining and Working on Demo.

As i've finished all the objectives listed in the project site, this period is used to do refinements and creating the final demo of the project.

I've given all the information on building and running the product in the previous post.

Github Repos

I've forked all three repositories that were required to register and test an Unknown patient.
But developing on the master branch of each repo seems to be useless as Openmrs barely support any backward compatibility.
If i were to develop the platform using the master branch, it would not be compatible with the modules.
Therefore, my approach was to develop using the versions that are available on the downloads page, so that they are confirmed compatible with each other.
However, i still needs to talk further about this with my mentor.

When develop using a version other than the master branch, i've selected the tag releases. This caused me a serious problem at the end since i can't push any changes to a tag branch.
Sincere there were not much of a choice left to me, i've created a branch in each repository starting
b-<version>
For now, you have to refer to this branch in Core, RegistrationApp and RegistrationCore modules.

I'll update the blog once the demo video is done.


by Nipun Thathsara (noreply@blogger.com) at August 21, 2017 05:52 PM

Lahiru Jayathilake

Week 12 : Exclude Non Matching Patients

In this week I have been working on the PTM-88 which is to exclude set of non-matching patient records from the report generation process. 

The main reason to carryout this task is, the match process generates a list of highly likely matches (probable duplicates) for human review. The human reviewer will declare true matches and non-matches from this list. Currently, the Patient Matching module repeatedly presents all likely matches each time it runs, without being informed by the human reviewer information learned from prior runs. 

User Interface,



You can exclude the patients by selecting them and clicking the button Exclude Patients.


by Lahiru Jayathilake (noreply@blogger.com) at August 21, 2017 05:12 PM

Choxmi Sathsara

GSoC @OpenMRS 12th week — DHISReport Reporting Enhancements

Overview

DHISReporting module automates the process of running sql queries against an OpenMRS instance and posting the results to a DHIS2 instance. It even exposes a set of web services that can be consumed through your applications or by using cURL. The module works with OpenMRS 1.9.x and higher.

Objectives

  • Implement report mapping function

Report mapping function is about mapping DHISReports with Reporting module reports. With this functionality DHIS Data elements will be mapped with the Reporting Indicators of the reporting module. More

  • Handle un-mapped reports

Module should be able to handle the data indicators which hasn’t mapped with any SQL query or any other cohort report. With this implementation, those reports will be indicated and will not allow the user to generate the report until the mapping is get completed.

  • Generate report history in reporting module and link history to DHIS report

With the new implementation, now user can view the history of the reports which is linked to DHISReports. About this implementation and un-mapped report part is described here.

  • Prioritize the report generation

This objective is about report rendering. The user can decide which should be prioritize when rendering the report. It can be SQL or Reporting. Some reports may have mapped with SQL Cohort reports. In that case the query result may be different from the result generated in reporting module. This functionality will address that issue. More

Documentation : https://wiki.openmrs.org/display/docs/DHIS+Report+Module#DHISReportModule-3.4ReportMapping

Github URL : https://github.com/Choxmi/openmrs-module-dhisreport/tree/report-mapping

Blog posts : week1, week2, week3, week4, week5, week6, week7, week8, week9, week10week11

Issues reported and worked on : DRM-28 , DRM-9 , AC-395 , AC-399 , REPORT-812 , REPORT-828

by Choxmi Sathsara at August 21, 2017 03:53 PM

Xu Hao

Open Concept Lab enhancements — The 12th Week of GSoC 2017

Hello, guys, as you see in the title, this is the last week of coding period, and we should finish the coding work to be ready for the last evaluation. In fact, I have to say, this is a difficult week for to to do the last objective. Because I have to show the data with visualization. You know that, front-end is hard for me. Up to now, I have a question that I can not solve.

Alright, I say something about the work in this week. You know that, the objective of this month is to add a “Relationship Browser” view in OCL, so that when you are looking at a concept, you can see immediately-related concepts in an intuitive way, and quickly browse to them. So what I should do is that get right data and display them with right way. So Firstly, I coded in back-end to get data, and select them to delete data that does not match. And Secondly, I should show them with visualization ways, so I need to find a right JavaScript library to use, but I met an emergency, so I asked for mentor to help me find a proper JavaScript library. Now, I am working for show data with it.

In fact, I encounter the problem that show the data with JavaScript library, so I have to solve it tomorrow, and finish the work of this month. And I need to get ready for the last evaluation. That’s all work I will do next week.

That’s all, thanks to everyone who cares for me and helps me a lot. Have a good time.

by Xu Hao at August 21, 2017 03:37 PM

Reuben Varghese

WEEK -11 Updates [12th August — 19th August]

This is the 2nd last week of Gsoc and I was busy fixing some issues that were caused after migration to Bintray . After all , no script can be perfect ;-)

Moreover, I’ll be focusing on getting the Module versions based on user platform version to work. I am currently also trying to tackle my college exams on the other hand and hence was busy;-)

by Reuben Varghese at August 21, 2017 02:43 PM

Gsoc 2017 Final week @ OpenMRS

After 3 whole months, 2 evaluations, thousands of LOC, countless nights of coding, this week has finally come when Gsoc comes to an end. I am not sure whether I am happy or sad about it but one thing is for sure and that is that I will never forget this experience ever. Moreover, I am so glad to have got this opportunity to work with an open source organisation.

Coming to the progress report, this week had been all about getting the new Rest APIs set up and also the suggestion of modules compatible with the user’s platform version. In the final week, I will be implementing the download counts feature wherein I’ll be fetching the info from Bintray and rendering it in Add Ons.

So finally, now comes the big question. Will the Gsoc mean the end of my relation with OpenMRS? NEVER! I absolutely love working in this organisation and I don’t think I’ll ever want to stop contributing to it.

by Reuben Varghese at August 21, 2017 02:37 PM

Suthagar Kailayapathy

More Metadata Management in AdminUI — GSoC 2017 Project

Final Report — Week 12

Overview

OpenMRS Legacy Module contains a lot of administrative functionalities which are needed to manage the reference application. Most of this administrative functionalities contain a legacy model and less experience to the users. So OpenMRS Community wanted to migrate those administrative features to the Modern view. More Metadata Management in AdminUI project is one of those projects which are designed to migrate some of these administrative functionalities to the modern view. In the More Meta data Management in AdminUI project will focus on this following functionalities while migrating,

  1. Manage modules
  2. System Information
  3. Manage Scheduler

Those features are implemented as Open Web Apps with the modern view to the users.

Project Goals

  • Migrate the legacy functionalities to the modern open web apps
  • Increase the user experience and feasibility of the legacy functionalities
Use some better user interfaces instead of legacy model
Change the workflow of the functionalities to increase the usability
Simplify the administrative functionalities for the users.
  • Extend the usage of the legacy functionalities with REST APIs
  • Extend the administrative features using existing functionalities
  • Improve the problems which are identified in the legacy UI modal
Implement Module Drag and Drop features
Implement Module Information page
Allow user to directly download the modules from OpenMRS Addons
Increase the System Information view
Implement Real Time Task Execute features

Implementation

Those features are implemented as an Open Web App and included into the SysAdmin Open Wep App.

Used technologies for the developments,

  • Front End Development : HTML, CSS, Angular JS, jQuery
  • Back End Development: Java, REST API
Home Page of the Open Wep App

Manage Modules

This feature will be used to manage the modules in the OpenMRS reference application. Users can use this implementation for this following functionalities,

Features of the Manage Modules

1. List all the installed Module — New Icons used to indicate the module status

2. Start the module

3. Stop the module — Confirmation Pop up will be shown with the dependent modules details to alert the user

4. Delete/Unload the module — Confirmation Pop up will be shown with the dependent modules details to alert the user

5. Check updates — Module updates will be checked with OpenMRS AddOns and listed in the new page for
the user selection.

6. Check one module update — Check the update with OpenMRS AddOns and indicate the update status

7. Start All Modules — No Modifications

8. Add/Upgrade Modules — Implemented Drag and Drop feature

9. Search Modules — Connected with OpenMRS Addons and user can search the module independently

10. Search Module Information — User can view the detailed information about the searched module

11. Module Information View — Used to display the module information with required modules, aware of modules,
and depend on module details

12. View not installed module information — Connected with OpenMRS add-ons and indicate the user about the installation features.

Module View Page
New (non installed) Module Information Page
Module Update Page
Module Search Page
Search and Install page

System Information

This feature will be used to display the System information about the OpenMRS server and the system. Users can use this feature to get this following information,

  1. OpenMRS Information
  2. Operating System Information
  3. Java Runtime Information
  4. User Information
  5. Memory Information
  6. Database Information
  7. Module Information
System Information Page

New Features

  1. Divided the existing System Information under different set of categories to increase the usability
  2. Used some new kind of Icons to illustrate the Information Category properly
  3. Modified Module Information Section with some new ideas.

Manage Scheduler

This feature will be used to manage the tasks in the OpenMRS reference application. Users can use this implementation for this following functionalities,

Features of the Manage Modules

  1. List all the installed Module — New Icons and UI used to indicate the module status

2. Schedule Task — No Modifications

3. Shutdown Task — Confirmation Pop up will be shown to alert the user

4. Reschedule Task — It will reschedule the existing task in the system

5. Delete Task — Confirmation Pop up will be shown to alert the user

6. Reschedule All Tasks — It will reschedule all the tasks in the system

7. Shutdown All Tasks — It will shut down all the tasks in the system

8. Startup Tasks — It will reschedule all the tasks in the system

9. Refresh Tasks — It will refresh the list of registered tasks

10. Add New Task Definition — Used to create new Task Definition, Implemented new UI for this functionality

11. Edit Task Definition — Used to edit existing Task Definition, Implemented new UI for this functionality

Manage Scheduler Page
Add / Edit Task Definitions page

Resources

OpenMRS talk discussions links, (You can get more information about the projects development workflow using those talk threads)

  1. GSoC 2017 — More Metadata Management in AdminUI
  2. REST Implementation for Scheduler in Legacy UI Module
  3. Manage Scheduler Implementation on SysAdmin OWA
  4. New REST Implementation for SystemInformation
  5. System Information Page Interface Modification

Created and worked tickets during the project development

  1. OWA-21 : Implement Module Management Functionalities in OWA
  2. OWA-22 : Implement System Information functionality in OWA
  3. OWA-24 : OWA-22 / Modify System Info Page
  4. OWA-25 : OWA-21 / Implement Module Details view page
  5. OWA-26 : OWA-21 / Integrate with OpenMRS Add-Ons to get module updates
  6. OWA-27 : Implement Manage Scheduler functionalities in OWA
  7. RESTWS-673 : Implement REST services to Manage Scheduler functionalities.
  8. RESTWS-674 : Include More Test cases for ModuleController1_8 in REST Module
  9. OWA-31 : OWA-21 Implement Drag and Drop module upload feature

Created tickets for the issues by me during the development period

  1. AO-8 :Allow cross-origin calls to our REST API
  2. AO-9 :REST endpoint for getting a module by it’s modulePackage value
  3. PDMO-1 :Implement Encounters functionalities in OWA

Weekly Blog Post

  1. Week 1 — OpenMRS Module Management OWA
  2. Week 2 — Upload module to OpenMRS using REST
  3. Week 3 — System Information Open Web App
  4. Week 4 — OpenMRS System Administration OWA
  5. Week 5 — First Evaluation — Google Summer of Code
  6. Week 6 — System Administration OWA — Final Stage
  7. Week 7 — Complete the SysAdmin — Final Stage
  8. Week 8 — Module Update with OpenMRS Add Ons
  9. Week 9 — Second Evaluations — GSoC 2017
  10. Week 10 — Started working on Manage Scheduler
  11. Week 11 — Drag and Drop Module Implementation

Github Code base: https://github.com/suthagar23/openmrs-owa-sysadmin

suthagar23/openmrs-owa-sysadmin

OpenMRS Wiki Page : https://wiki.openmrs.org/display/projects/More+Metadata+Management+in+AdminUI+-+GSoC+2017+Project

GSoC Time with OpenMRS…. Write Code, Save Lives….!

by Suthagar Kailayapathy at August 21, 2017 02:21 PM

Sanatt Abrol

Week 12 – Controller Finished – SMART in final development

This week was very productive in terms of quality and quantity. Finally, the module is FINISHED !!

This week, I finished the Client Management REST Controller. Initially all testing was done against the authenticationManager used by the token services. So, I made a new authenticationManager one custom to server the needs of the REST Controller.

The controller supports the following endpoints :

  • GET /clientManagement?username=xyz&password=xyz
  •          This will return all the clients registered by the client developer xyz.
  • POST /clientManagement?username=xyz&password=xyz?name=abc….
  •          This will create a new client for the client developer xyz
  • DELETE /clientManagement?username=xyz&password=xyz?client_id=abc
  •          This will unregister the client with client_id abc
  • UPDATE /clientManagement?{details here}
  •          This will update the client details

 

Progress on SMART ?

All initial research was finished and discussed thoroughly with Mayank (my mentor, @maany) this week and all the authorization endpoints were completed in the module. The next step is to code the JavaScript based SMART on FHIR client which will run against the OAuth module, get a token and access FHIR resources. The JavaScript client is in development phase at the time of writing the blog and I am expected to finish it by Tuesday.

What next?

After the SMART on FHIR client is completed, I will be documenting all the work done in this summer and create a static github.io page explaining all the work and give useful statistics about my work.

 

 

The post Week 12 – Controller Finished – SMART in final development appeared first on Sanatt Abrol.

by sanattabrol at August 21, 2017 01:12 PM

Jude Niroshan

[GSoC-2017: 12th week] Built-In Reports for Reference Application OpenMRS

So, this is it! It’s the final week of Google Summer of Code program. I’m still so proud that I was chosen as a student in OpenMRS community to do some cool work in this summer. This week I was mainly working on writing test cases for React components. Now It’s the time to bundle up the things and make things shinny.

I have changed the appearance drastically with CSS modifications to the user interfaces. Now the things are more clean and minimal. I’m still left with the documentation and preparing a video presentation which need to be shared among the OpenMRS community.

Tomorrow I’ll have the weekly meeting with my mentor. I plan to discuss about the release of this OWA and integrating the TravisCI to this OWA. At the same time I have to write clean documentation what I have done in this summer. Seems like a busy week is coming up ahead. So, I’m getting ready for it :-)

by Jude Niroshan at August 21, 2017 06:03 AM

August 19, 2017

Kwateng Ofori

12th Week of GSoC @ OpenMRS

This is the last week of GSoC. I managed to complete all tasks. The swagger SDK generation postpond due to major version upgrade to STU3. I completed medication request GET, POST and DELETE operations. OpenMRS DrugOrder not allow to edit.

Added Documentation added in https://wiki.openmrs.org/display/projects/MedicationRequest+Resource

Medication request specification https://www.hl7.org/fhir/medicationrequest.html

Challenges and Concerns when implement the MedicationRequest

  • Medication request timing can’t match with DrugOrder
“timing”: {
“repeat”: {
“boundsPeriod”: {
“start”: “2015–01–15”,
“end”: “2015–01–20”
},
“frequency”: 1,
“period”: 6,
“periodMax”: 12,
“periodUnit”: “h”
}
}
  • Medication request fields status, intent, maxDosePerAdministration and validityPeriod can’t map

I’ll add my final presentation in next which is the last post.

by Ofori Kwateng at August 19, 2017 11:40 AM

August 16, 2017

Suthagar Kailayapathy

WSO2 API Cloud Live Log Viewer

Back in Action….

Live Log Viewer feature has been enabled in the WSO2 API Cloud. Unfortunately, Live log viewer feature was disabled in the API Cloud for a long time due to some internal reasons. After some improvements, WSO2 API Cloud is going to provide the live log viewer feature again to increase the user experience and feasibility. It will give the real experience to the users like real log viewers.

Visit WSO2 API Cloud to get the Live Log Viewer Experience

Why is Live Log Viewer Important?

WSO2 API Cloud contains a reasonable amount of customer in this time and they are using API Cloud for their internal and external API Management. They are creating/managing their APIs in the API Cloud and debugging for their needs.

Do you know the challenge of Debugging? The following quotes of Brian Kernighan will express the depth of debugging,

“ Everyone knows that debugging is twice as hard as writing a program in the first place. So if you’re as clever as you can be when you write it, how will you ever debug it? ”

So there should be some kind of tips to identify the issues in the debugging time. Now a days the Logs are plays major role in the debugging, every programmers and debugger depend on the different type of logs to identify the issues to fix it. It is an easy way also to identify the issues regarding some problems.

WSO2 API Cloud is the middle ware platform which is working in the background to manage the customer’s APIs. If there are any critical time for the customers and while they are trying to debug it, There is no way to debug with API Cloud from the customer level. The only way is getting the logs from API cloud and analysis those logs to identify the problem. So WSO2 API Cloud is responsible to provide the logs for their customers in the real time. Now customers can easily go to API Cloud live log viewer and get their logs in the real time when they are dubbing their API’s.

Follow these steps to get your live log viewer in the API Cloud

  1. Log in to your WSO2 API Cloud (If you are an existing customer you are required to log out and log in again at the first time of the use)
  2. Go to API Cloud Admin Dashboard ( Click the Configure menu in the top bar and click Admin Dashboard menu)
  3. Then Click Log Analyzer menu on the left side, then It will expand and show Live Log Viewer menu
  4. Click on Live Log Viewer to get your recent logs.

Features of WSO2 API Cloud Live Log Viewer

It provides the recent logs respected to your organization. If you haven’t any logs for last certain time, then you will get an empty live log viewer. So better to use it in the real time while you are busy with debugging.

It will automatically refresh and provide the latest logs to the customers. Works across all regional gateways around the globe. Customers can get the following type of logs from Live Log viewer

  • INFO Type Logs — Blue color tag
  • ERROR Type Logs — Red color tag
  • WARN Type Logs — Golden Brown color tag
  • DEBUG Type Logs — Green color tag

Live log viewer display pattern will be like,

{ LOG TYPE } { LOG TIME } { LOG MESSAGE }

Live Log Viewer notifications and solutions

Live Log Viewer failure notification

Are you getting the above error message in the Live Log Viewer? then the reasons for the error message and solutions are,

  • Your current browser session might be corrupted due to some browser actions. So just Refresh the browser to get the logs.
  • Your browser session might be expired or cleared. So just log out from the API Cloud and log in again
  • It may take some time to retrieve the logs at the first time. So if there any corruptions during this interval It may lead to this error message, So better to refresh the Live log viewer page.

Live Log Viewer too much of logs notification

If you are getting above type of error, that means you have reached the maximum limit of log line during your current session. The limit of the log lines is very large and appropriate for the debugging. If you intend to get more logs using this current session, It may lead to down your browser. So better to refresh your browser once to get the latest logs.

If you can’t get the logs using those above solutions, then feel free to contact our WSO2 Cloud team — cloud@wso2.com

by Suthagar Kailayapathy at August 16, 2017 07:22 AM

August 15, 2017

Nipun Thathsara

Up and Running

I have completed movingthe functionality to core. And altered registration appa dn registration core modules to function with that.

Here are the instructions to test the priject

Please follow the instructions to build and run the project.
1. Platform
Checkout branch: git checkout b-2.0,5
Build: mvn clean install -U -DskipTests (Build core first and update your .m2 to build other modules)

2. RegistrationCore module
Checkout branch: git checkout b-1.7.1
Build: mvn clean install -DskipTests

3. RegistrationApp module
Checkout: git checkout b-1.8.0
Build: mvn clean install -DskipTests

4. Download other required modules
Delete registrationapp-1.8.0.omod and registrationcore-1.7.1.omod from extracted directory
Replace them with your build artifacts
put modules to modules directory
restart the tomcat

by Nipun Thathsara (noreply@blogger.com) at August 15, 2017 07:14 PM

Sanatt Abrol

Week 11 – Back to Controller

So last week, I was having some troubles with integrating the Client Management REST controller into the module. The troubles were about managing the entry point for the URL mapping. Finally, me and my mentor Mayank decided to do it the way IETF (Internet Engineering Task Force) describes. Like the document here and also manage the client dynamically using protocols defined here.

So I’ve implemented the process using the standards defined by IETF.

Next Problem ? (Because there’s always one  😛 )

 org.codehaus.jackson.map.JsonMappingException: Direct self-reference leading to cycle (through reference chain: java.util.ArrayList[0]->org.openmrs.module.oauth2.Client["creator"]->org.openmrs.User["creator"])

The client class inherits fields like “creator” and “voided” from the BaseOpenMRSData which in turn inherits org.openmrs.User. This leads to a recursive cycle and causes a Jackson JsonMappingException.

Meaning? We simply can’t return OAuth client objects and expect Jackson to convert them into JSON (like it’s supposed to)

Fix? Convert your objects into JSONObjects manually using JSON classes and then send them with the appropriate Http Message.

Progress on SMART ?

As mentioned in the last week’s blog post, the next piece of business was supposed to be SMART. I worked and researched a lot on SMART. SMART on FHIR is a use-case for the module and it’s highly necessary that it is completed in this year’s GSoC.

My initial plan was to use the SMART on FHIR sample JS application and modify it to our needs. However after spending lots of time on 17000 and so lines of code on the fhir-client.js it turns out the app was designed only to be run against their own sandbox server 🙁

So the work on SMART is put on hold for now and further work will be done after a call with my mentor (The call is scheduled for 15th Aug 9:30 pm IST).

 

The post Week 11 – Back to Controller appeared first on Sanatt Abrol.

by sanattabrol at August 15, 2017 08:09 AM

Shivang Nagaria

WebServices, REST APIs & OpenMRS

Hello Everyone!

This week followed the work I have done last week. Last week I have designed the APIs and gathered feedback from community. I started with implementation of the REST APIs this week. Turns out OpenMRS developed a module for facilitate the development of REST APIs — it looks quite useful even I though I didn’t explore it much.

Major design issue of last week was tackle by @darius and he gave me but wonderful feedback. One of the major issue was should we host run_rules under /results or /rules . By the help of Darius, I was able to solve this issue. Finally we are hosting runrequest instead of run_rule under /rules , so this APIs call can maintain a queue or run the rule immediately and send back the response.

Even during last weeks I’m learning something new. During the discussion I came across realised that testing could be sometimes better that hot-redeployment. It would be much faster and you’ll also get accurate behaviour. All thanks to @darius again. I’m not much familiar with Test Driven Development but I will learn it and try to use it.

This week I will continue with the implementation and try to finish it as soon as possible. Apart from this I have other works like — updating wiki pages, fix some small issues etc as this is the last week of GSoC’17 ,

Useful

by Shivang Nagaria at August 15, 2017 07:49 AM

Ayush Goyal

GSoC Week — 11

This was the worst week ever. I was working on a lot things and I was half way through my work. Since the code was not complete so I haven’t pushed it anywhere and was working on the localhost, and then suddenly my mac froze and I had to force restart it. And then the most devastating thing happened. My hard disk crashed. Every bit of data gone in snap.

And this is not the worst part, since Apple’s internet recovery doesn’t work behind proxy so I cannot just reinstall the OS directly. I first had to find a person who has Mac, then I had to download OS on his system from App Store and then make a bootable pendrive to install OS on my system. And due to bad internet speed it took forever to download that 5 GB file.

Anyway at last I installed everything, setup my working environment and started working again.

I am definately gonna replace my hard disk now once the GSoC period is over.

by Ayush Goyal at August 15, 2017 07:08 AM

August 14, 2017

Jai Tatia

WEEK 11 [9th August – 15th August]

We are almost at the end of the GSOC period. Just one more week to go. This week I focused on cleaning up my UI code. A couple of asynchronous features weren’t working so i worked on getting them to work. Other than that i made corrections based on my mentors review. I also submitted a pr for changing the module structure which was merged.

There is one small feature left, which i plan to work on after the current pr gets merged, hopefully by tomorrow. The feature shouldn’t take too much time.I then plan on working on the documentation and debugging my code.


by jtatia at August 14, 2017 08:55 PM

Chanuka Wijayakoon

GSoC 2017 – Week 11

Over the 11th week, I tried to refactor the code to use as many concepts as possible for data collection. I have added required concepts to be loaded via the module activator at module startup. Then I tested adding data to the system with the saved concepts. We’re now properly using concepts to store theater …

by merovingienne at August 14, 2017 05:44 PM

Ankit Kumar

Week 11 - Create Patient Component

We are now almost at the last week of our GSoC project period. Time flies and I am really going to miss those days spent with my mentor and the community members. I will definitely try to continue contributing to the OpenMRS whenever I will get time from my college work.
Past week passed with a little bit of hectic schedule. I continued working on the Patient Create component to add more functionalities and also to fix various bugs as pointed by my mentor. We are trying to provide users with a better UX (user experience) as possible.
I tried to show the use of ui router as well as the breadcrumbs component but still I am working on some further reviews given by my mentor.

Here is the PR link :  https://github.com/psbrandt/generator-openmrs-owa/pull/31  which I am currently working on.
Despite of my college works, I am trying my level best to give more to this community in my last stage of the coding period. Hoping to complete this part soon !!

Thanks,
Ankit kumar   

by Ankit Kumar (noreply@blogger.com) at August 14, 2017 05:27 PM

Jude Niroshan

[GSoC-2017: 11th week] Built-In Reports for Reference Application OpenMRS

It was a very busy week for me. I was left with bunch of small tasks in my project. In the last meeting with my mentor, I showed the progress on Open Web App which I developed using ReactJS.

User Interfaces are not super fantastic, but it does what we expect. I am having a big plan to take care of this OWA for the rest of my life. I can see many things can be improved in this web app. But with limited time period in GSoC program, everything is not possible. But with the current work, anyone can further improve this module. Foundation has laid properly with the help from my great mentor Rafal.

Currently I’m working on writing unit test for React components. It’s something new for me, and I like to learn something new. As coming up week is my last week of the program, I need to bundle up what I have done for last 12 weeks.

by Jude Niroshan at August 14, 2017 03:32 PM

Suthagar Kailayapathy

Drag and Drop Module Implementation

Week 11 [Aug 08, 2017 — Aug 14, 2017]

I am reaching the end of GSoC timeline and wanted to prepare for the final evaluations. Last week, I spent more time on Scheduler REST Implementation and SysAdmin Modifications. I couldn’t move with OpenMRS Add-Ons with last week also, because they haven’t pushed the changes to the live. So probably I will work on OpenMRS Add-Ons this week.

I have implemented Drag and Drop feature to the SysAdmin module upload. It is a new feature to the users and they can easily drag and drop the .omod files to upload the module.

Drag and Drop module changes and updates · suthagar23/openmrs-owa-sysadmin@55a316f

Then I have updated the Loading spinner icon from OpenMRS logo to another one. OpenMRS Community decided to move with a new spinner logo for the usage instead of OpenMRS Logo, I have changed like this following,

Last week, I worked on these tickets

  1. RESTWS-673 : Implement REST services to Manage Scheduler functionalities.
  2. OWA-27 : Implement Manage Scheduler functionalities in OWA
  3. RESTWS-674 : Include More Test cases for ModuleController1_8 in REST Module

and created a ticket for module drag and drop feature,

  1. OWA-31 : Implement Drag and Drop module upload feature

I could not complete the REST Implementation with in last week and wanted to complete the REST development with in this coming week :-)

by Suthagar Kailayapathy at August 14, 2017 03:08 PM

August 13, 2017

Kwateng Ofori

11th Week of GSoC @ OpenMRS

The GSoC coming to and end. Past week I publish my video on my current work. Please watch it below.

https://medium.com/media/ac5b8216c9177cdd15b6458953bcab2e/href

During this week I implement medication request GET and POST implementations. Now person can create a DrugOrder through FHIR Medication Request. Below content use to create a DrugOrder.

{
“resourceType”: “MedicationRequest”,
“id”: “56b9196c-bcac-4c2f-b3a2–123464a96439”,
“status”: “stopped”,
“intent”: “order”,
“priority”: “routine”,
“medicationCodeableConcept”: {
“id”: “865fceb1-ad0c-4102-aead-26ca25c77b09”,
“coding”: [
{
“system”: “http://openmrs.org”,
“code": “cedf8fc4–6fc9–11e7–9b2b-c4d98716fd91”,
“display”: “Cetirizine”
}
]
},
“subject”: {
“id”: “cf14c415–6fc9–11e7–9b2b-c4d98716fd91”,
“reference”: “Patient/cf14c415–6fc9–11e7–9b2b-c4d98716fd91”,
“display”: “John Patient(Identifier:100)”
},
“context”: {
“id”: “3fcd2047–2aca-404f-ab9d-0d009265d4dd”,
“reference”: “Encounter/3fcd2047–2aca-404f-ab9d-0d009265d4dd”
},
“authoredOn”: “2008–10–19T09:24:10+05:30”,
“requester”: {
“agent”: {
“id”: “b3d97e25–274e-4ed6-b1aa-18848505c33e”,
“reference”: “Practitioner/b3d97e25–274e-4ed6-b1aa-18848505c33e”,
“display”: “Super User(Identifier:Test)”
}
},
“recorder”: {
“id”: “b3d97e25–274e-4ed6-b1aa-18848505c33e”,
“reference”: “Practitioner/b3d97e25–274e-4ed6-b1aa-18848505c33e”,
“display”: “Horatio L Hornblower(Identifier:Test)”
},
“dosageInstruction”: [
{
“sequence”: 1,
“timing”: {
“code”: {
“coding”: [
{
“system”: “http://openmrs.org”,
“code”: “ae984cea-24cb-4e1e-abdd-fd19c9802704”,
“display”: “1/day x 7 days/week”
}
],
“text”: “1/day x 7 days/week”
}
},
“route”: {
“id”: “cee0f244–6fc9–11e7–9b2b-c4d98716fd91”,
“coding”: [
{
“system”: “http://openmrs.org”,
“code”: “cee0f244–6fc9–11e7–9b2b-c4d98716fd91",
“display”: “UNKNOWN”
}
],
“text”: “UNKNOWN”
},
“doseQuantity”: {
“value”: 3.0,
“unit”: “mg”
}
}
],
“dispenseRequest”: {
“quantity”: {
“value”: 1.0,
“unit”: “tab (s)”
}
}
}

In swagger console you can see the medication request is added.

Next week plan is to complete update and documentation. Few concerns will be raised in OpenMRS talk.

by Ofori Kwateng at August 13, 2017 11:46 PM

Choxmi Sathsara

GSoC @OpenMRS 11th week

I was able to complete the development phase and the documentation. Updated documentation can be found here.

In addition to that, when I was testing the module, I was able to find two bugs and resolved those two bugs as well.

That’s all for this week. ☺

by Choxmi Sathsara at August 13, 2017 05:18 PM

Lahiru Jayathilake

Week 11 : Merge Patients

Once after generating the report if user thinks some patients in a particular group are the same then there should be a functionality to merge them. In this week I have completed it successfully. 

You can merge the patients by selecting them and clicking the button merge.

Once the set of patients are merged the report will be look like as follows, 

This task was carried out under the PTM-87 and the pull request can be found here.

by Lahiru Jayathilake (noreply@blogger.com) at August 13, 2017 03:48 PM

Xu Hao

Open Concept Lab enhancements — The 11th Week of GSoC 2017

As the title said, this week is the 11th week of Google Summer of Code 2017. In fact, I remember that time is tense, I should finish the last objective in the last time. As we all know, it is hard to have a good ending. However, I will try my best to finish it.

Last week I captured the video about my work. Originally, I do not know how to capture the video with English. Because we don’t speak English in China at all, and my Spoken English is not standard. But I finish the work when I do it over 30 times. I am proud of me.

In next week, I plan to finish the third objective. In my opinion, the technologies in the third objective are similar to the second objective, they are all about front-end. But I know the third objective is harder than the second objective, because I should show the relationships of concept. And I will write a detail proposal about the third objective.

That’s all. I will work harder to have a good ending. Thank you.

by Xu Hao at August 13, 2017 03:33 PM

August 09, 2017

Reuben Varghese

WEEK -10 Updates [4th August— 11th August]

This is the tenth week of gsoc and I still am enjoying every moment of it ☺.

This week’s task was to get a previous feature to work as per comments received from my mentor. I also had to create new rest end points so that the developer who may want to use the even is given more flexibility in his choice of parameters. The PR is still under review.

I am also working on OpenMRS platform select. I have successfully migrated all the modules to now use Bintray as the primary source for module downloads instead of Modulus.

I the platform select feature, I am on the lookout for a good way to pass props from parent to {this.props.children} without using redux or flux. Fortunately, I came across React.child. Now I am able to pass the params easily. Currently, I am trying to fix some bugs with this feature.

In the meantime I have also started look at ideas for implementing the comments feature.

Hopefully the coming week is much more productive.

Unfortunately I do not have much to speak of because I have already spoken about this issue in a previous video .

You may view the video here : https://goo.gl/7tWMMm

by Reuben Varghese at August 09, 2017 05:57 PM

August 08, 2017

Nipun Thathsara

RegistrationCore keeps build failing

I've first deployed the solution using the platform and registration app along with normal versions of other required modules.
It kept giving errors.
Figured out the registration core too, has to be rebuilt using the new platform dependency.
Trying that gave me an error.
Couldn't figure out since i never did any modification other than the depndency reversioning.
And the error doesn't seem to that.

Therefore, checkout the exact same version as the openrms download page and tried building without any modification, not at least the dependency change.
It fails while running tests :(

Tried for sometime and did the same with another computer. It ran fine.

Have to figure out that immediately.

Will give you and update once this versioning problems are solved.

by Nipun Thathsara (noreply@blogger.com) at August 08, 2017 04:44 PM

Chanuka Wijayakoon

GSoC 2017 – Week 10

We’re nearly done with all development now. This week I went through CIEL and identified existing concepts that I can use for data collection. It turns out that the whole set of data collected for past surgery history are available in CIEL. Instead of past procedures, they call it procedure history. There’s a set of …

by merovingienne at August 08, 2017 12:32 AM

August 07, 2017

Shivang Nagaria

REST API, Data Integrity Module & OpenMRS

This week I worked on DINT-82 — a task related to design and implementation of REST API. As of now, data integrity module don’t have any API support for showing rules and results or generating results by running rules.

This task is particularly challenging as well as important as by exposing data integrity module APIs, other services can easily use this module. OpenMRS Android Client or other such apps can use these APIs to check the validity of data received.

The design basically involved two resources in terms of REST API design conventions which are:

Data Integrity Rules

  • Hosted at /dataintgrityrules which supports getting list of all rules, all rules belongs to same category or a single rule.
  • Users can also fetch list of results generated for a particular rule. As it can be very huge list, the server will send data in chunks. In other words, it will be paginated.
  • Similar to other APIs in OpenMRS, rules can also be fetched by uuid instead of rule-id.

Data Integrity Results

  • Hosted at /dataintgrityresults. Returns paginated list of results.
  • This API call will also support fetching results which generated for a patient or a program. You can get list of results generated for a particular program/patient.

This task involved an interesting design challenge on which the discussion still going on. The set of above API will also support running a rule for an API call — so the question raised where it should be hosted ? If we host it under /dataintegrityrule then it violates the REST conventions. Basically, it will be a POST call which will add new resources and hosting it under the rules APIs call would be misleading as it is not adding any new rule. Hosting it under /dataintegrityresults is fine according to REST conventions but we it also doesn’t seems okay as we aren’t generating results directly by this call. Hopefully we’ll find a good solution — you can find the ongoing discussion link below.

Another interesting stuff I came across while working on this task is swagger — its a framework for APIs. I didn’t explored it much but will do. More information can be found here.

Links

  • You can find related post here.
  • A very nicely written blog about REST APIs and how one should use them share with me by @dkayiwa can be found here.

Thanks!

by Shivang Nagaria at August 07, 2017 07:22 PM

Reuben Varghese

This is the tenth week of gsoc and I still am enjoying every moment of it ☺.

This is the tenth week of gsoc and I still am enjoying every moment of it ☺. This week’s task was to get a previous feature to work as per comments received from my mentor. I also had to create new rest end points so that the developer who may want to use the even is given more flexibility in his choice of parameters. The PR is still under review. In the meantime I have also started look at ideas for implementing the comments feature. Hopefully this week is very productive.

Unfortunately I do not have much to speak of because I have already spoken about this issue in a previous blog.

by Reuben Varghese at August 07, 2017 06:54 PM

Ayush Goyal

GSoC- Week 10

This week was a bit hectic. I started working on adding support for visit documents and since the Visit Document UI module[1] is not a part of OpenMRS ref app so it is not installed on demo server I was using till now for testing. Therefore, I had to setup the local instance of the OpenMRS server.

In summers also I tried a lot of failed attempts to setup the server but thanks to Daniel it was working this time. Though it took a lot of time to setup due to low internet speed of the campus and the maven install failed a couple of times too. But at last it was all working fine.

Antony pointed out that app needs login locations but there setup dosen’t use locations and therefore they are not able to use the app. So, I started working on resolving it after getting the server credentials from him. But the REST services was not working properly. Everytime I sent a GET request, the server was returning the source of the webpage which should not be the case if REST services were working properly. So, I mentioned about it in the issue itself and waiting for his reply.

I also started with the appointment scheduling module and was reading its documentation to implement it in the android client.

References :

[1] https://modules.openmrs.org/#/show/265/visit-documents-ui-1

by Ayush Goyal at August 07, 2017 05:57 PM

Jai Tatia

WEEK 10 [ 2nd August – 8th August]

There was major progress this week with regards to the UI Fragment that was to be added to the clinician facing patient dashboard. After major hacking, the angular resource was completed and the controller is almost at completion. Now all tags added to a patient can be viewed.

Screenshot from 2017-08-07 22-28-56

Tags can be deleted :- Screenshot from 2017-08-07 22-29-10

And Tags can be added:-

Screenshot from 2017-08-07 22-29-56

A couple of features are left that should be done within the next week. I will then finally move on to documentation, testing and finally making the module ready for the final evaluation.


by jtatia at August 07, 2017 05:05 PM

Ankit Kumar

Week 10 - Next steps on OWA Generator

First of all, we are glad that a new version of the Openmrs OWA generator (v0.5.0) has been published with new shining components and with a proper testing infrastructure.

This week mostly involved discussion on some of the pre decided topics in which we (me and my mentor) were confused whether it should be implemented on not. The major topic of discussion was to introduce the FHIR module support into our generator. After few suggestions and comments, we decided to drop the plan of introducing the FHIR component and we agreed to use the REST API instead.
We opened a discussion to get suggestions from the community that what should be the next step in this project.
Link to the talk thread :

https://talk.openmrs.org/t/next-steps-for-openmrs-owa-generator-sparkles/12727/7

After that, I began to design the patient create component which would be a perfect example to demonstrate the http POST requests through openmrs REST API.

I designed the component and send the PR which is currently under the review process. I have been asked to implement some changes as per some of the reviews of my mentor.
So, currently working to complete the patient create component with perfection.

Here is the PR link :  https://github.com/psbrandt/generator-openmrs-owa/pull/31

Thanks
Ankit kumar

by Ankit Kumar (noreply@blogger.com) at August 07, 2017 04:06 PM

Jude Niroshan

[GSoC-2017: 10th week] Built-In Reports for Reference Application OpenMRS

OMG…! It’s has reached to 10th week in GSoC program. I can’t believe it. Time really flies. I’m starting to feel sad deep down in myself. This wonderful program is sooner going to be end. However I have 2 more weeks left. Last week I was working on implementing a new React component. As per my mentor’s advise, I broke down components further and add the styling to the components as it’s now time to bundle up my project and prepare for the final presentation.

I have many things to clean up. Specially the OWA has lot of half-work done. So, I need to add more styling and make things shinny. Because reports are important. I have to write unit tests for those as well in React. But for the moment, I am trying to finish the things up and then move to unit testing. Because the priority is to implement the features.

Currently I’m adding more and more css styles to report components and making things clear. Tomorrow I have my weekly meeting with my mentor. So, hopefully his advice is really matters now for me. I feel that I don’t have enough time to do more things. But I try my best to deliver my maximum with great quality which I think I have already done in my project.

by Jude Niroshan at August 07, 2017 03:37 PM

Choxmi Sathsara

GSoC @OpenMRS 10th week

After the weekly meeting with my mentor, we decided to add prioritizing functionality to the mapping section. Users can prioritize the report rendering method. When an element mapped with a SQLCohort, the edit report section allows to edit the query as well. In this case, even if the element is mapped, user can get report from either SQL query or reporting module indicator. If user select SQL option, the report execution will give the priority to SQL query.

In addition to that, I did some formatting and improved the efficiency of mapping code as well.

That’s all for this week :)

by Choxmi Sathsara at August 07, 2017 03:18 PM

Xu Hao

Open Concept Lab enhancements — The 10th Week of GSoC 2017

Time flies. This is the first week of the last month, as we all know, everyone wants a good ending, and we all will try our best to do our work. Mentor and I gave many efforts to this project, I hope we can hold on the last moment.

This week I don’t do the work because I did some things about summer vacation and my sister’s new baby. She is cute and funny, I can watch all day. As the weak work week, so I prepare to work next week.

And I want to say thank to mentor and people in organization, they give many help to me to finish the project. I will try my best to do the last objective, thank you.

by Xu Hao at August 07, 2017 12:44 PM

Suthagar Kailayapathy

Started working on Manage Scheduler

Week 10 [Aug 01, 2017 — Aug 07, 2017]

After the second evaluations, I spend some days on SysAdmin Open Web App to fix some issues and feed backs. I couldn’t complete the module update part yet, because OpenMRS Add-Ons project also improved during this GSoC time and currently they haven’t completed for those required end points for the access.

So We decided to move Scheduler part this week. My mentor advised me to complete this part as soon as possible. There are two huge tasks wanted complete under Manage Scheduler

  1. Implement REST Part for the Manage Scheduler
  2. Create Open Web App with all Manage Scheduler functionalities.
Manage Scheduler Dashboard — Legacy UI Module

So I started to implement REST part for the scheduler. I created two tickets to implement Manage Scheduler part,

  1. RESTWS-673 : Implement REST services to Manage Scheduler functionalities.
  2. OWA-27 : Implement Manage Scheduler functionalities in OWA

Apart from that, I have worked on two more tickets during this week.

  1. RESTWS-645 : Default representation of the module resource should include version
  2. RESTWS-674 : Include More Test cases for ModuleController1_8 in REST Module

RESTWS-645 Added version to Module Resource default representation by suthagar23 · Pull Request #291 · openmrs/openmrs-module-webservices.rest

I planned to complete the REST Implementation with in this three days and wanted to complete at least half part of Open Web app development with in this coming week :-)

by Suthagar Kailayapathy at August 07, 2017 12:21 PM

August 06, 2017

Lahiru Jayathilake

Week 10 : Nice Report :)

In this week I have been doing some enhancements to the patient matching report. The reason I had to do that when the patients are updated in a way that it would affect to the  patient matching report, then the report too should be updated. 

Consider the following patient matching report.

If the patient 13(Unique ID) is updated in a way that it will no longer exhibits any matching properties with patient 12, then the group 4 should be removed from the report. But if patient 23 is updated then only the patient 23 should be removed from the report not every record in the group 3.

The code that I written for the above purpose looks like as follows,


by Lahiru Jayathilake (noreply@blogger.com) at August 06, 2017 05:56 PM

Kwateng Ofori

Tenth Week of GSoC @ OpenMRS

This week my target to comple the FHIR Medication resource get requests. I have went through the MedicationRequest resource of FHIR and identified mappings between OpenMRS DrugOrder. There are some fields which we can’t map with DrugOrder. I have discuss it with mentor and did possible workarounds. Plan is to put a OpenMRS talk post.

by Ofori Kwateng at August 06, 2017 04:47 PM

Sanatt Abrol

Week 10 – Work on SMART started

Finally, one of the major tasks for the summer (Project migration) was completed and now we can start work with the SMART application.

Overview of SMART on FHIR : 

SMART on FHIR is a set of open specifications to integrate apps with Electronic Health Records, portals, Health Information Exchanges, and other Health IT systems.

The SMART application we’ll be creating will serve as a use-case for OpenMRS Community.

When an OpenMRS user launches the SMART app, we’ll get a “launch request” notification. Just ask for the permissions you need using OAuth scopes like patient/*.read and once you’re authorized you’ll have an access token with the permissions you need – including access to clinical data and context like:

  • which patient is in-context in the OpenMRS
  • which encounter is in-context in the OpeMRS
  • the physical location of the OpenMRS user
  • access to a patient data using FHIR module

The SMART will be a JavaScript application. The original plan was to make a REST based application, however there’s not much documentation available for implementing SMART using REST. The javaScript application that I’ll be making in the next ten days or so will be based entirely on the sample JavaScript by smart helthcare.

SMART is a tech stack for health apps. More information about this can be found here.

The post Week 10 – Work on SMART started appeared first on Sanatt Abrol.

by sanattabrol at August 06, 2017 10:13 AM

August 01, 2017

Ayush Goyal

GSoC- Week 9

Atlast, the form creation issue is resolved and I have pushed the code to GitHub. Finaaly no more missing forms in the app.

Also, some one who is using the android app pointed out that he cannot login to the app even if no locations are configured. I will fix that this week along with my other work.

This week marked the second evaluation for which we had to give a short presentation of our work till now, my presentation video can be found here :

GSoC-2017 | OpenMRS | Android Client Project | Mid Term Presentation

by Ayush Goyal at August 01, 2017 12:40 AM

July 31, 2017

Chanuka Wijayakoon

GSoC 2017 – Week 9

In-theater workflow enhancements includes collecting various data during the surgery is being performed.  My original plan was to have a simple page that would show a timer and allow users to add various data as the surgery continues. But later I realized that it’s not practical to have someone typing at a computer during a …

by merovingienne at July 31, 2017 09:04 PM

Jai Tatia

WEEK 9 [26th July – 1st August]

This week involved working on the UI Fragment for the clinician facing patient dashboard. The fragment will be backed by an angular app. The angular controller will render data by calling methods from an angular service, which in return Uses $resource and $promise for asynchronous data fetching. We make use of the rest resource by making rest calls to obtain data.

Screenshot from 2017-08-01 01-01-21

The UI Fragment Will Look like below:

Screenshot from 2017-08-01 01-00-47

I also made a video as my mid-term presentation to describe the work done till now.


by jtatia at July 31, 2017 07:35 PM

Kwateng Ofori

Ninth Week of GSoC @ OpenMRS

This week I have able to test the functionality of the code. I tested available FHIR resources of the module and fixed several minor issues due to module upgrade. Afterwards, I checked swagger console and it broken due to the recent upgrade. Then I fixed the issues and now the swagger console works fine as well.

My next target is to implement the medication request resource of the FHIR.

by Ofori Kwateng at July 31, 2017 06:39 PM

Shivang Nagaria

Breadcrumbs, flow and OpenMRS

Hello everyone!

This week I worked on DINT-74 in which I have worked on mockups and designs. As of now, the flow of not intuitive and kind of broken. It doesn’t actually represent the flow followed by the user.

DINT-74 points out to such broken flows. In this task I need to more the more intuitive and informative. I have worked on the mockups which are displayed below:

Landing Page (page 1)
List of All Rules (page 2)
On Running single Rule (page 3)

User will land on Page 1 where he will see the list of results generated from the data integrity rules. From there he can navigate to list of rules and can run single rules from there (page 2). Note that breadcrumbs show the flow followed by the user.

When user run a single rule he redirected to respective page (page 3). If he chooses to run all the rules he redirected to previous page (page 1).

This week I also worked on the demo of the work I’ve till now. In the following video you can introduce yourself with the Data integrity module and learn about the feature I’ve implemented:

https://medium.com/media/442f0900a4b6796812236d55afd841d5/href

This week I’ll work on the following issues:

  • DINT-74: Improve the workflow for running single rule. I’ll complete this as soon mentor approve the mockups.
  • DINT-82: Create and expose API of data integrity module

Thanks!

by Shivang Nagaria at July 31, 2017 06:13 PM

Suthagar Kailayapathy

Second Evaluations — GSoC 2017

Week 9 [July 25, 2017 — July 31, 2017]

In this week, I wanted to complete evaluations for my mentor. There was a small survey to collect some information about the mentors and feedback.

In this period, My mentor Daniel also wanted to complete the evaluations of mine. Finally, I was able to success my second evaluations and received positive feedback from my mentor about my works so far. I have prepared a small demonstration video for my second evaluations,

https://medium.com/media/f7b76c3b88df6024d668d3bcec3aa987/href

Development Coverage

I received some feedback from my mentor to improve system Administration OWA. He mostly encounters some issues in the user interfaces such as Notifications, Messages, and Layout spacing which will make it as a professional look. I spent last week to resolve those mentioned issues.

I have modified the System Information page with some new idea. Previously this contains information under 4 main categories, and now I categorized under 7 categories to increase the user experience.

Then I completed the REST Part of the SystemInfo and created Pull Request to the OpenMRS Repository. Now it merged with themaster branch to update the resource in the next release.

RESTWS-665 : SystemInfo REST implementation by suthagar23 · Pull Request #285 · openmrs/openmrs-module-webservices.rest

I created three more issues to continue the workflow last week,

  1. Implement Module Details view page [OWA-25] — 
    Currently, there are no ways to get full information about the single module. So better to implement a Module details view page to display all the relevant information about that module.
    It should contain these following details,
    1. Module Information
    2. Required Module’s details
    3. Aware of Module’s details
    4. Dependent Module’s details
  2. Modify System Info Page [OWA-26] — Include some extra information to make SystemInfo Page better. Include some tag images for the headings. It will give a better user experience
  3. Integrate with OpenMRS Add-Ons to get module updates [OWA-24] — Currently, module update using module.openmrs.org to get the latest module information. but Community is going to retire module.openmrs.org soon. So It’s good to migrate the module update functionality with OpenMRS Add-ons.(https://addons.openmrs.org/)

by Suthagar Kailayapathy at July 31, 2017 06:08 PM

Nipun Thathsara

OpenMRS remote debugging

I am working with 3 repositories for my GSoC project,
1. Registration App
2. RegistrationCore
3. Core

Debugging the application should be done using remote debugging option. In this post i'll explain the steps to remote debug openmrs. However i haven't yet tested the solution fully since i couldn't do much in this week. Anyway, i'll share my findings here.

What happens in here is, we are running the server in the debugging mode, specifying a port to communicate between the IDE and the server. Normally you pass the debugging argument along with your server start command.
--debug=5005

Once the server is fired using this argument, it will open the specified port for an outsider to listen.
In this case our IDE.
I am using Intellij IDEA. You create a ne w remote debugger setting the port to 5005 and host to local host.


Then checkout the exact version of the repository that you want to debug.
Connect to the debugging port by running the debugger you just configured.

Server will communicate all the changes just like in normal local debugger.

I'll be integrate the parts and debug to see if the solution is working in this week.

by Nipun Thathsara (noreply@blogger.com) at July 31, 2017 05:14 PM

Xu Hao

Open Concept Lab enhancements — The 9th Week of GSoC 2017

I am glad to tell all of you that I finished the second evaluation, and I am more excited that I have learned many technologies like JavaScript and CSS. In fact, the second objective is harder, because I am not familiar with the JavaScript and front-end technologies. However, I finished it, I feel happy because I did it.

As we all know, next month is the last month, and more challenging. In fact, days with you to work on the same objective are short, I feel happy when I do something with many people who likes to contribute to open source project. But even the finest feast must break up at last, I will we can be better in our life. Of course, we have a month to work with each other, the most important thing is that we should finish the third objective. I will try my best to do it better.

That’s all, I prepare to have a rest this week, so there is not much work in this week. Thank you.

by Xu Hao at July 31, 2017 03:13 PM

Ankit Kumar

Week 9 - Midterm Evaluation and presentation

This week was the evaluation week where we were assigned the duty of submitting the second evaluations of our mentors along with the midterm presentation (which was previously decided by our organisation Admin). The deadline for that presentation was this Monday for all the students of our organisation.
Previously the presentation work was appearing to be quite easy for us but when I started the work, it was not that easy and it took me around one and a half day to prepare that 5 minute presentation.
I made that presentation on windows operating system using the Ice-cream screen recorder. I must say its an easy to use and well managed tool with a lot of features to record the screen along with a clear audio.
Here is my presentation video :



Apart from creating this presentation, I worked on the changes that was to be made as per the review of my mentor onto the PR :  https://github.com/psbrandt/generator-openmrs-owa/pull/30

Changes made on this PR were :

** regex matching and transferring of files from the generator
** Completely removed the hello component and its test
** Changed the loading spinner as per the uicommons library
** search component now queries backend only when atleast 3 characters are entered

Today I will make some changes on the breadcrumbs component.
Apart from these works, I prepared my plan on how should I prepare to add the FHIR module support on my webapp.

Thanks,
Ankit kumar

by Ankit Kumar (noreply@blogger.com) at July 31, 2017 11:43 AM

Jude Niroshan

[GSoC-2017: 9th week] Built-In Reports for Reference Application OpenMRS

It’s sad that now I’m getting the feeling of end to my GSoC journey. We have 3 weeks more to go. At the same time, I have more work left to do. This week, it there were many things had happened. My 2nd evaluation was held and I got PASSED!!! Thanks to my great mentors. This week I was refining the OpenMRS_ReportAsTable React component which I created inside my OWA. At the same time I was trying to write unit test for that. I was able to integrate Jest test platform in my OWA.

Apart from those, I started to create another new component called OpenMRS_ReportAsChart React component which plot the report data. I was focused on trying to making those components to be more generic enough so that other developers in future will find it easy for them to reuse.

I also prepared a small video presentation which Harsha(OpenMRS GSoC administrator) us to make a presentation on what we have completed so far and then others in the community get to know whether we are on the right track or not. I made that video and uploaded it to YouTube.

https://medium.com/media/28665fa3f0c4ea83d204e55054f51f3c/href

Now I’m working on refining my existing reports and trying to write test coverage for react components. Time is really flying…

by Jude Niroshan at July 31, 2017 09:53 AM

Choxmi Sathsara

GSoC @OpenMRS 9th week

Last week was the second evaluation period of Google Summer of Code. I completed and passed the second evaluation successfully.

Last week I was working on some extensions of my project. I added un-mapped report handling to the mapping section. This functionality may help to fix some JIRA tickets in the future. With this feature, now user cannot execute un-mapped reports and it will give an error message and will not show the post button as well. In addition to that, it will indicate the relevant report in the mapping section as well. Please refer the screenshots.

Un-mapped report definitions indicated in red
Specify the report
Error while posting

In addition to that, I added another functionality which is really helpful when keeping records. Now the module can create a history log in Report module report history which. It will show the report results in the Report module as well. And it will display a link to the report log in DHISReport module report as well.

Link to report module history log
Report results
Report history

At last, I created a small demonstration for my mid term presentation.

https://medium.com/media/4d309e2d0de0251667fec385783e48e6/href

That’s all for this week. Thanks :)

by Choxmi Sathsara at July 31, 2017 09:50 AM

Alexis Duque

VLCS 2017 accepted paper

The paper “SeedLight: Hardening LED-to-Camera Communication with Random Linear Coding”, co-authored with Razvan Stanica, Hervé Rivano and Adrien Desportes, has been accepted for publication at the VLCS 2017 workshop, to be held in Snowbird, Utah, USA, on October 16, co-located with the prestigious ACM MobiCom 2017.

July 31, 2017 07:36 AM

July 30, 2017

Lahiru Jayathilake

Week 9 : Incremental Patient Match

Good news, everything which is needed to perform an incremental match has been completed. In this week I did complete the PTM-85 which is mainly about taking the user's decision whether to perform the patient match as an incremental match.


If the user selects the match as an incremental then the time takes to perform the match will be less compared to a normal patient match. This performance is achieved because the data set to be compared is small. The data set contains only the newly added patients and updated patients after the last execution date of the report.


What if the user selects an incremental match and a patient match has not been done under the particular strategy? 
For the first time every patient record is compared with every other record. This process might take considerable time depending on the size of the patient records.

Despite whether there is an already existing report user can perform a full patient match for a particular strategy. 

Pull request for PTM-85 : https://github.com/openmrs/openmrs-module-patientmatching/pull/37 

The web page looks like as follows,



Incremental Patient Match

After all of theses changes this is how it looks like.

1. Run a report with the configuration name "test1"



A report will be created adding the incremental-report text to the configuration name.


2. This is how it looks like when a patient match is performed at the first time



3. Added a patient which shows a match with an existing record



4. Run the report again (Incremental patient matching)



The same incremental-report-test1 report will be updated.

5. New patient is added which do not exhibit any matching property with existing records



Then there will be no changes in the report.

6. Add another patient



7. Run the patient match then the report will be updated as the following image




8. Update an existing patient in a way that it will show matching properties with existing records


The updated patient will be added to the same group in the report.


Here is the link for my mid term presentation : https://www.youtube.com/watch?v=j-m9kDQmdz0&t=5s 

by Lahiru Jayathilake (noreply@blogger.com) at July 30, 2017 08:13 PM

July 25, 2017

Kwateng Ofori

Eighth Week of GSoC @ OpenMRS

This week I installed the module and do the testing. The swagger resources generator required several changes to compatible with the latest release.

After completing the swagger generator changes, I tested available resources and fixed bugs. I’m at final stages of the testing and need to move quickly to the next phase.

by Ofori Kwateng at July 25, 2017 02:32 AM

Chanuka Wijayakoon

GSoC 2017 – Week 8

Wow, two months gone just like that. This week, my focus was on implementing the pre-theater data collection as per our discussions over the previous weeks. If you followed along,  you’d remember that we decided to use concepts and obs groups to  record the collected data. The first thing I did was getting the patient’s …

by merovingienne at July 25, 2017 01:40 AM

Jai Tatia

WEEK 8 [19th July – 25th July]

This week involved studying AngularJs, which will be needed to create the UI Fragment, for the clinician facing Patient Dashboard. I learnt everything that will be required which includes:- Modules, Directives, Controllers, Databinding, Service, Filter, Http, etc.

Apart from this, I also begin to setup the module along with a reference application distribution, so that i can view the ui changes.
This required me to do the following :-

Using the SDK
First create a ref app distribution on a server using

mvn openmrs-sdk:setup

then put the module on watch

mvn openmrs-sdk:watch -DserverId=myserver

finally cd into the created module
then run

mvn clean install mvn openmrs-sdk:run -DserverId=myserver

also put port:xxxx for remote debugging, in IDE

However I seemed to face some kind of liquibase error which I trying to debug.
I also added the required dependencies, in the module along with a JSON file which will help in creating an extension to the secondColumnFragment in the clinician facing patient dashboard.


by jtatia at July 25, 2017 01:11 AM