OpenMRS Planet

October 20, 2017

Ayush Goyal

Diwali — The festival of lights

So this Diwali I decided to stay in the campus instead of going home because of low attendance and not having optimum holidays. I thought it would be excellent to stay and enjoy the awesome illumination of IIT Kharagpur, but it turned to be a total disaster. I had some heated arguments with the hall council members on the forced illu duty and power cutting in junior residential blocks which killed the Diwali mood! But in the evening two of my friends Prakhar and Rahul came to my room and we were chilling, and after some time our other friends also joined us, and it lightened my mood, and we decided to go to Park Hotel for drinks and dinner. While we were just reaching Park, someone suggested to go Shergil Dhabha, and that was the best decision of the day.

The place had the typical Dhabha ambience and we enjoyed like hell. But the main reason which motivated me writes this whole thing up was the talk with one of the people there. His name was Sukhwinder Singh. He was a remarkable person. He was the owner of the place and was sitting on the counter. Rahul and I went up to him and casually started talking. He told us he was from Jalandhar and when we asked him when he came to Kharagpur, to our surprise, he remembered the exact date, time, weather and even the car number with which he came here. He told us he was 15 years old when he came to Kharagpur and now his age was around 60–70. He also said that he has three kids, one daughter, and two sons. And all three of them are currently in Melbourne, Australia. That was an amazing thing to hear. He also told us that his dad owns the petrol pump on the other side of the road. He was the most impressive guy I met in a while. He really made this Diwali worth remembering for me.

by Ayush Goyal at October 20, 2017 10:05 AM

Suthagar Kailayapathy

GraphQL — Next Level of API Language

Combine your multiple REST endpoint into One…

Image from http://graphql.org/

GraphQL is a new API standard that provides a more efficient, powerful and flexible alternative to REST Web services. It was developed and open-sourced by Facebook and is now maintained by a large community of companies and individuals from all over the world. It provides an alternative to REST and ad-hoc web service architectures.

It enables declarative data fetching where a user can specify exactly what type of data it needs from an API endpoint. Instead of multiple endpoints that return fixed data models, a GraphQL server only exposes a single endpoint and responds with precisely the data a client asked for. Simply says, You can get a bundle of data using only one GrpahQL API request instead of triggering so much of API endpoints.

Let Assume, there are some API endpoints to retrieve some useful information from the server.

  • Getting user information from an API endpoint. It will return the user id, name, address and birthday of the related user id.
Image from http://graphql.org/
  • Now you want to fetch some posts information of this respected user. So you need to trigger another API endpoint with the user id which was used for the last rest call.
Image from http://graphql.org/
  • Finally, you want to fetch some followers of the respected user to create some statistical report. So you need to trigger another endpoint to fetch this data.
Image from http://graphql.org/

So, If you want to analyze the user info, you want to trigger at least three API endpoints to retrieve the required info. The count of the triggers may differ about your API designs. It can be large or less than this count. Anyway there are one or more API triggers required to achieve some tasks.

GraphQL is one of the solutions which can reduce this amount of triggers to retrieve the response from the massive data collections. It based on some kind of querying for the data retrieval.

For the above example, You can retrieve the required data using one API trigger! How is this possible?

Let’s play with GraphQL,

Endpoint : ~/api/graphql
Request : query {
User(id : "er3tg439frjw") {
name
posts {
title
}
followers(last:3) {
name
}
}
}
Response : {
"data" : {
"User" : {
"name" : "Mary",
"posts" : [
{ "title" : "Learn GraphQL today" }
]
"followers" : [
{ "name" : "Jhon" },
{ "name" : "Alice" },
{ "name" : "Sarah" }
]
}
}
Image from http://graphql.org/

Have you seen the Response of the GraphQL request? It contains almost much required data for the request.
Yah, you can get it by only one API request!. That’s the very big advantage of the GraphQL based API endpoints.

GraphQL — A Query Language for APIs

Now a days, Most applications want to fetch data from a server where that data is stored in a database. It’s the responsibility of the API to provide an interface to the stored data that fits an application’s needs.

GraphQL is often confused with being a database technology. This is a misconception, GraphQL is a query language for APIs — not databases. In that sense it’s database agnostic and effectively can be used in any context where an API is used[1]

GraphQL is totally based on queries. It will fulfill the request queries with your existing/pre-defined data as the response.It provides a complete and understandable description of the data in your API and gives users the power to ask for exactly what they want over the huge data and nothing more, makes it very easier to evolve APIs over time, and enables powerful developer tools.

You can simply ask for what you need from the massive data, you will get exactly that one.

Just send a GraphQL query to your API endpoint and get exactly what you need from there, nothing more and nothing less-exactly what you want.

The response for the GraphQL queries always contains the predictable results. API endpoints using GraphQL are fast and stable because they control the data they get, not the server.

It will reduce the number of API calls for a scenario. GraphQL queries access not just the properties of one resource but also smoothly follow references between them. While typical REST APIs require loading from multiple endpoints, GraphQL APIs get all the data in a single request.

Just summary about the GraphQL,

  1. REST and GraphQL are totally different — Don’t put them into one bucket.
  2. You can definitely use both at the same time — There are no blockers or restrictions in the real time.
  3. GraphQL is dope if used for the right thing — Just read more about GraphQL

REST vs GraphQL

  • GraphQL reduces network requests by allowing users fetch or retrieve all the data they need in a single query using the single endpoint. There are no multiple requests to fetch the data in the real time.
  • Data fetching is one of the most significant improvements in theGraphQL. In a typical REST API, to fetch or retrieve data from a server, users might need to trigger multiple endpoints. But with GraphQL, users only have one endpoint with which they can access data on a server.
  • Typical REST APIs contains the versioning like v1, v2, v3 etc. which simply indicate the version of the REST API we are using. But with GraphQL, there is no need for versioning as users can easily add new fields and types to our GraphQL API without impacting existing queries.
  • GraphQL has no caching mechanism. Since HTTP already implements caching, and REST is implemented using HTTP, the client can use HTTP caching to avoid re-fetching resources.
  • GraphQL only responds with 200 OK response status. That means, If the query contains the required data or not, users will get the 200 OK response status. They need to check with the response to understand the success or error status. But Error handling in REST is pretty straightforward, We have different status codes to indelicate the response status.
Image from http://graphql.org/

Why is GitHub using GraphQL as their V4?

GitHub chose GraphQL for their API v4 because it offers significantly more flexibility for their integrators. The ability to define precisely the data you want — and only the data you want — is a powerful advantage over the REST API v3 endpoints. GraphQL lets you replace multiple REST requests with a single call to fetch the data you specify.

Thanks and for the more read,

[1] — https://www.howtographql.com/basics/0-introduction/
[2] — https://medium.com/chute-engineering/graphql-in-the-age-of-rest-apis-b10f2bf09bba

[3] — https://code.facebook.com/posts/1691455094417024/graphql-a-data-query-language/
[4] — http://graphql.org/learn/

[5] — https://philsturgeon.uk/api/2017/01/24/graphql-vs-rest-overview/

[6] — https://developer.github.com/v4/

by Suthagar Kailayapathy at October 20, 2017 07:09 AM

October 16, 2017

burkeware.com

Mount Rushmore

Just got back from a wonderful trip to South Dakota with Lorrie. I wanted to see Mount Rushmore before it became this:

by burke at October 16, 2017 05:57 PM

September 28, 2017

Suthagar Kailayapathy

Nice! As a request, Do not attache code as images or screenshots.

Nice!
As a request, Do not attache code as images or screenshots. You can use `code blocks` in medium to show your codes.

by Suthagar Kailayapathy at September 28, 2017 04:57 AM

September 26, 2017

Suthagar Kailayapathy

The way to Google Summer of Code — Start your Engineering

From the experience of a GSoC Student from OpenMRS

The biggest summer 2017 has reached the end. I think you all are enjoyed your summer holidays very well. Most of you went for the trips and some of you took the long rest.

What did I do?

I got a valuable gift for my career. YES! I was busy with Google Summer of Code and spent all summer to gain a lot of knowledge. I never felt hard to miss the trips or rest. Because I am very satisfied and enjoyed my summer with OpenMRS — I am happy to say, I lived with my passion and wrote Codes, save lives.

I got some capital for my career through the Google Summer of Code Program. I am not speaking about the Stipend, Just mentioned about the knowledge and experience. Now I can develop my self using that valuable experience.

Google Summer of Code

Google Summer of Code

Google Summer of Code is a global program sponsored by Google Inc focused on introducing students to open source software development for the open source organizations. Students work on a 3-month development project with an open source organization under some mentors.

Do you like to get a chance to work on Google Summer of Code? Then better to think about these guidelines first,

  1. Do you have the passion about the Software development or IT related field?
  2. Do you have much time to spend the summer with an Open source Organization? — Cool, No need of much time. 30+ Hrs per week is enough for a general project. You can enjoy your summer with rest of the time.
  3. Are you willing to get a paid learning opportunity during your college time? — Definitely, you can buy a new Apple Mac book pro with your stipend.
  4. Do you want some friend in your field from other nations? — You will get a chance to meet more than 1000 students through the GSoC Program
  5. Don’t miss the chance to meet the experts as your mentors — You will be directed perfectly to achieve your target quickly.
  6. Do you have the goal to reach Google? Get a change for Google One time referral chance— You will be invited for the job/intern interview quickly for the applied position.
  7. Show your colors to the society. Definitely, they will catch you as a paid employee- Truly, Some of the GSoCers got the opportunity to continue the work as a paid employee after the GSoC period.
  8. Fill your LinkedIn, Resumes and CVs with the weight roles like Google Summer of Code. Definitely, you will be shined among the others if you have mentioned your GSoC title.
  9. Everyone can write the code to complete the task. But one mentor can direct you to utilize the methods to increase the task efficiency. You can catch those techniques using the GSoC experience.

You can get information about GSoC program through the GSoC FAQ section.

How did I familiar with GSoC?

  1. Contacted past mentors from various organizations and gathered a lot of details about GSoC and that process (OpenMRS, WSO2, Moodle and Apache Software Foundation)
  2. Subscribed mailing list and GSoC official group to know about the current discussions.
  3. Researched a lit bit about past projects and technologies which belong to some organizations
  4. Got experience with some new technologies which are mentioned in those projects.
  5. Read some blogs of past GSoC Students and referred some important workflows

OpenMRS

OpenMRS is an Electronic Medical Record System with a lot of facilities and OpenMRS is also a community of developers, implementers, and users working toward a shared and open foundation for managing health information in developing countries. So as a developer, I would like to be part of OpenMRS to make it more efficient using my Computer Science and Engineering related knowledge. OpenMRS is an open source platform, so there are a lot of ways to contribute. One of the most identified methods to contribute OpenMRS is Google Summer of Code.

Image from OpenMRS Wiki

How did I get a chance to work for OpenMRS?

I never try anything massive! Don’t think too much about the activities needed for this role.
Simply Says, Do something to get community focus on your activities.

  • I just spend some time on OpenMRS talk page get familiar with the environment
  • As the request, I got access to the OpenMRS Issues page and take some simple issues to solve!
  • Created some talk post about the issues and fixes and discussed about that with the community people
  • Contacted my mentor and discussed about the project idea
  • Did some demo works to show my potential to the community — Yes, Hopefully, I can do this project :-p
  • Created an awesome proposal for the project :-)

Yah, I got the chance to work for OpenMRS though this year GSoC. I worked with Daniel and Wyclif during this summer period.

Let follow this another post to get more about contributing to the OpenMRS,

How to reach OpenMRS as GSoC Student?

A little bit about the project selection

More metadata Management in AdminUI — Can you understand anything using this title?
No, If you are not familiar with this domain, then definitely you can’t understand the content of this project with only the title. The title of the project might reflect the concept as more complex. But there is nothing difficult.

Image from Graphicsbuzz

Don’t get afraid of the Project title and the content. It may contain some unknown technical terms or technologies. Just Google it them and clarify.
You should Google it everything and get some immediate knowledge about them At least try to get knowledge about the used terminologies.

Can you imagine the implementation of the function in an abstract class?

Like that, GSoC Title and content is the abstract of the project. You should try to get more information about that respected project from the community or your mentor.

What Can I do to get more information about the project?

  • Go to the Organization official webpage and find out the pages respected to this project. It may contain some more information about the project
  • Just go through the content and contact the mentor for that project. He/She will response you with a list of resources to you about the project. You can continue the discussion with the mentor to get more information about the project.
  • You can follow(subscribe too) the email threads, Discussion groups and IRC talks which are used for the discussions about this project

Don’t spend much time on unrelated projects for your domain area. If you are only like to learn something new, then you can involve some new domains.

If you can’t get familiar with the project content, then better to move with another project. There will be a lot of projects to you. You can select one project which will make you really enjoy.

The project may need more than 5 technologies but still, you are the only familiar with 2/3 technologies. Then don’t hesitate to try on that project. Just Google the unknown technologies and go through some of those documentations. You will have much time before the project starting period from the project selection time(Approx. 2 months). Definitely, you can learn some of those technologies within this time gap.

GSoC is open for the Students(who can learn!) not for the employees(who already knew it)

How to increase the chance for the GSoC?

The perfect answer will be, Show your interest and Do something to convert the community view about you. They should trust you and follow your works and interest.

Contact the mentor frequently and discuss about the project. Try to get more information about the project from the mentor.

He/She is the only resource person who knows totally about the project.

If you are learning anything new, then just write some blog posts about that. It will increase your chance to the GSoC. Blogging is very important to the Open Source world. You should expose your knowledge to some others using the blogs or any other writing materials.

Read articles and learn something new, then Write blogs about that!

If you can find any ideas to write something about the organization which is your target or any ideas related to your project domain will increase your changes for the GSoC. It will express your ability and interest to the others as well as a community.

No need to fulfill the GitHub timeline with all green boxes. Anyway you need to have some of the green boxes at there :-p (I think. I had only 10% of green boxes when I was planning for the GSoC)
The Community will not depend on your GitHub timeline. You don’t need to think about that much. They only expect your interest and commitment to the project.

Before the Google Summer of Code period
During the Google Summer of Code period

GSoC Project Proposal Techniques

You can apply maximum five projects for the GSoC. Anyway, you need to work on that projects and want to show your efforts to the community. Showing efforts to five projects will not increase your chance at GSoC. So just plan and catch 1–3 projects among them and work only for those during the proposal time.

Please go through the official proposal template for the organization which is your target. Each organization prepared some proposal templates for their easy of access. If you missed that templates, then you can’t think about the GSoC :-p

If you can, just implement some demo samples for your project and include them in your proposal. Do not forget to include the timeline for the project. Clearly, indicate the main task and sub task about your project plan and better to describe those within 1–2 sentences in the timeline.

Do not wait until the last minute of the proposal submission deadline. Start working on proposal writing before one or two weeks and check all the spelling mistakes, grammar, and terminologies carefully. Making mistakes in the proposal may decrease your chance at GSoC. You should fit on your proposal and show your innovative ideas through your proposal.

Submit your draft proposal before one week of the submission and request your mentor or community to review that. Do not ask them at the last minute for the review, then surely they will fire you. If you ask early as possible, then they will spend some more time to review your proposal will give some comments to improve your ideas. Then finalize the proposal and submit to the GSoC.

What I learned through the Google Summer of Code 2017

I learned a lot of new aspects during my GSoC time. I got an awesome mentor :-). He helped me in so many ways and community cared about me every time.

  • A Chance to work with Community — A good chance to get more contacts from the industries and make friends around the world.
  • Good value for the Resume/CV — Yes, Definitely GSoC will replace the first row in my Resume/CV. It will some extra advantages while applying for the software related roles. Tech guys know the impact of the resume in their career.
  • Stipend — You are not supposed to do anything free to the community. Google will pay you! You can’t imagine the amount within your college time. I think you can buy a new Mac Book Pro or you can pay your semester fees with your GSoC stipend amount.
  • One time referral for the Google — You can get one time referral for the Google Jop. Then you will be interviewed for the role. If you satisfied their requirements during the interview, then you can land on the Google!
  • Colors — Yes, You are the most wanted guy in your university because of the contact with Google. Some of the universities honored their GSoC students and gave some credit for their works also.
  • Chance for the Mentoring — If you played your student role very well and completed your project with some good comments from the community, then you will get a chance to become a mentor for next GSoC. It will increase the chance to join with the Organization as an employee.

Hopefully, I have developed these following skills during my GSoC time,

  1. Technical skills — I learned a lot of new techniques for my project. I already familiar with most of them but I want to know them deeply to create new ideas about my project features.
  2. Coding conventions — How to code better and how to maintain the coding standards among the community
  3. Documentation Skills — I wanted to create some documentation for my project also. So I learned how to handle the wiki pages and documentation pages. Got some experience with documentation preparations tools.
  4. Open Mind — I learned how to review the PRs and How to guide others. Yes, we are allowed to guide other projects also. That means we can suggest our ideas in the talk thread and able to move with that ideas also.
  5. Problem Solving techniques— I faced some critical problems while working on the project and asked help from the community. There are so much of resource persons and they came up with different solutions. So I can learn from their solutions, How to think like them within my self.
  6. Blogging habit — Yes, I wanted to write blogs at least once per week. So I just updated my weekly works to the blog and explain the steps at there. So totally I created more than 12 blogs during my GSoC time. It increased the blogging habit among us.

This is the final report about my work for the Google Summer of Code 2017,

More Metadata Management in AdminUI — GSoC 2017 Project

Spend some time during your summer and, Start Your Engineerings!

Do not miss your years!

Google Summer of Code 2017 had 12 mentors under the age of 18.
Say what? 15 years old!? Yep! This group of enthusiastic teens started their journey in our sister program, Google Code-in, an open source coding competition for 13–17 year olds.

Prepare you for the next Google Summer of Code…!

by Suthagar Kailayapathy at September 26, 2017 06:47 AM

September 14, 2017

Alexis Duque

Tutorials on PhantomNet and Paradrop

University of Utah

On October 15th, a day before the start of MobiCom, I will attend two hands-on tutorials hosted at the University of Utah about two emerging wireless technologies: PhantomNet, a platform with an end-to-end mobile testbed to experiment with new wireless technologies in the wild; and ParaDrop, a new edge computing platform that allows experimenters to deploy edge services in a WiFi Access Point.

September 14, 2017 07:39 AM

Make your Bluetooth Low Energy IoT device more secure with Visible Light Communication

I wrote a post on Medium about Bluetooth Low Energy security showing how Visible Light Communication can improve it.

Follow this link to read it on Medium.

About IoT security

Since the Internet of Things is still in the emerging phase, ensuring security and privacy is an important issue that must be addressed and resolved now.

The number of IoT and connected objects grows exponentially, so their security exploits will have more and more repercussions, making them very attractive for the hackers. Recent news and the growing IoT track at security conferences such as Blackhat, or Defcon perfectly illustrates this phenomenon.

About Bluetooth

In regards to Bluetooth, the SIG greatly enhanced the BLE security releasing at the end of 2014 the Bluetooth Core Specification 4.2. This update introduces LE Secure Connections pairing model with the numeric comparison method and the Elliptical Curve Hellman-Diffie (ECDH) algorithm for the key exchange.
LE Secure Connections fixes BLE 4.0–1 exploits unveiled in 2012 by Mike Ryan at TOORCON (video, crackle project).

Like LE Legacy pairing, LE Secure Connection defines several modes and levels of security (see section 5.2.4 Association Models of the Bluetooth Core Specification 4.2). Nonetheless, the available modes depend on the “IO Capabilities” — keyboard, display, button — that the pairing devices have.

The highest level of security, Numeric Comparison requires that both BLE devices have a keyboard and a display to confirm and compare a number displayed on both the peripheral and smartphone. An alternative and more convenient approach is using NFC.
By placing a smartphone close to the BLE (and NFC) peripheral, NFC will automatically initiate the BLE pairing and keys exchange mechanisms to establish an authenticated and encrypted communication channel.

However, the highly limited bill of material (BOM) cost or the PCB size prevents placing a screen, an interactive input, or an NFC antenna on such devices.
As a consequence, they provide a weak level of security whereas the attacks targeting such smart objects are rising.

To overcome this issue, we propose a technological solution based on Visible Light Communication (VLC) solution to assist the pairing and the secure connection setup between a BLE 4.2 peripheral and a smartphone.
This solution targets low-cost and size-constrained IoT devices that need to setup the Secure Connection with Numeric Comparison to provide a high level of security even on BLE devices that have neither input and display nor NFC.

Few words about Kiwink and VLC

Rtone has recently developed Kiwink®, a short range bidirectional Visible Light Communication system between an unmodified smartphone and a basic and cheap LED.
Kiwink® uses the camera and the flashlight of an Android or iOS smartphone and does not need hardware modification in the IoT peripheral since it works with any micro-controller.

In fact, bringing Visible Light Communication to your nRF52 BLE device just need a firmware update!

The communication range of such technology is tens of centimeters while the throughput is about 1kbps from the peripheral LED to the smartphone and 50bps from the smartphone to the peripheral LED.

Kiwink® is a trademark and its technology patented.

Improving BLE security with Kiwink and VLC

To solve the problem described above, we propose to take advantage of this VLC-based technology and ubiquitous LEDs, to provide a safe side channel to acknowledge or display a confirmation code and establish a BLE Secure Connection. We can also envisage to transmit a larger key if another Secure Connection mechanism is used.

This out of band key exchange is thus safer than NFC against passive eavesdropper since the light signal is highly directive and easy to obfuscate.

In practice, the connection establishment should work as follow:

  1. The smartphone starts sending a BLE Secure Connection request to the peripheral
  2. The smartphone and the peripheral proceeds to the Secure Connection Establishment with Numeric Comparison according to the BLE 4.2 standard
  3. While the smartphone confirmation number appears on the smartphone screen, the peripheral LED starts lightning and transmits its number.
  4. By placing its smartphone above its screen, the application decodes the signal and displays the peripheral number on the smartphone screen.
  5. The user confirms that both codes are equal.
  6. The smartphone sends the acknowledgment to the peripheral using the flashlight.
  7. The peripheral decodes the acknowledgment signal and the secure connection establishment can proceed according to the BLE 4.2 standard.

Conclusion

We have shown that Kiwink and VLC offer the possibility to setup a SecureConnection with Numeric Comparison or Out-Off-Band authentication on low-cost and size-constrained IoT devices that have neither input and display nor NFC.

Our solution brings a high level of security on BLE devices that would have been completely unsafe otherwise. The costs of this major improvement are negligible since Kiwink only relies on a cheap LED and a piece of software.

Besides, many application fields and use cases of VLC exists like access control, device-to-device communication, or accurate indoor localization using ceiling LEDs (Kiwink website gives further information about VLC).

Finally, feel free to give your feedback about that. We are are waiting for your comments and suggestions!

You can also read this post and engage the conversation on the NordicDeveloperZone.

September 14, 2017 07:36 AM

August 28, 2017

Lahiru Jayathilake

GSoC 2017 - Final Report


Patient Matching 2.0



Student               -    Lahiru Jayathilake 
Primary Mentor   -    Burke Mamlin
Backup Mentor   -    Shaun Grannis

Project Wiki        -    Patient Matching 2.0
TALK Thread      -    OpenMRS TALK Thread Patient Matching 2.0
GitHub  Fork       -    Lahiru-J/patient-matching


What is Patient Matching 2.0

Patient Matching Module is an application where it tries to identify records that belong to the same patient among different number of data sources. This module is significant because in real world it has to be dealt with erroneous data. For example, a patient’s name can be misspelled. Benefit of this module is by linkage of records it would be easier for a patient to visit a hospital without carrying hard copies of test results whether or not the tests were done at the same hospital.

Summary of the Work

✔︎ Incremental Patient Matching

To give a little introduction on what incremental patient matching is, it is a method of identifying duplicate patients very efficiently. 
In a real world scenario, the requirement would be to match thousands of patients with each other. Once this matching process continues it would be very time consuming since all of the patients are compared with each of them regardless of the fact that two or three new patients are added/updated. Incremental patient matching is used as a suggestion to save time.

This task was my primary goal and I have successfully completed it.
Following are the commits & pull requests related to this task. Note that commits related to a branch are squashed according to the OpenMRS convention.

Commits

PTM-82 - https://github.com/Lahiru-J/openmrs-module-patientmatching/commit/b3ffd77b394cf021b3b4552bda726100e39b6190  

PTM-83 - https://github.com/Lahiru-J/openmrs-module-patientmatching/commit/7704534457797845ecf6896072a3c441494d8299

PTM-84 - https://github.com/Lahiru-J/openmrs-module-patientmatching/commit/c81024533508ac91f57a48c9b41beb2ebdc74595

PTM-85 - https://github.com/Lahiru-J/openmrs-module-patientmatching/commit/35172a90f9ec061b9027d37f6757f53463ea1df6

PTM-86 - https://github.com/Lahiru-J/openmrs-module-patientmatching/commit/b624286e1ad362ecf283a942f6b4d4c1b9429b75

PTM-89 - https://github.com/Lahiru-J/openmrs-module-patientmatching/commit/be4f39153b976dc3493f7541ff3e590ba1ecb73c


Pull Requests

PTM-82: Functionality to load patients considering the date created and date changed

PTM-83: Save and update incremental patient matching report to the database

PTM-84: Functionality to support two datasources

PTM-85: Functionality to select or deselect incremental match

PTM-86 : Remove matching pairs from the report when patients are updated

PTM-89 : Ignore voided patients when running a patient match



✔︎ Merge Patients

If some of the patients in a group supposed to be the same then the user can merge those patients making they will not appear again in a patient matching report. 

Commit
PTM-87 - https://github.com/Lahiru-J/openmrs-module-patientmatching/commit/6ee57f19ef62eea642b18d1642c938cd2033f8ab

Pull Request
PTM-87 - Functionality to Merge Patients in the report



✔︎ Exclude Non-Matching Patients

There can be some scenarios where the module results some of patients to be same but in real life those patients are related to totally different people. If this happens Patient Matching 2.0 project provides a functionality to eliminate such records without them repeatedly appearing on a patient matching report.

Commit
PTM-88 - https://github.com/Lahiru-J/openmrs-module-patientmatching/commit/b1f3fccf5151ee10f4d2282e62c88fa8b93dcca4

Pull Request
PTM-88 : Functionality to exclude non-matching patients


Blog Posts



Week
Blog Post
Week 12http://www.lahirujayathilake.com/2017/08/week-12-exclude-non-matching-patients.html
Week 11http://www.lahirujayathilake.com/2017/08/week-11-merge-patients.html
Week 10http://www.lahirujayathilake.com/2017/08/week-10-nice-report.html
Week 9http://www.lahirujayathilake.com/2017/07/week-9-incremental-patient-match.html
Week 8http://www.lahirujayathilake.com/2017/07/week-8-game-is-almost-done.html
Week 7http://www.lahirujayathilake.com/2017/07/week-7-game-of-codes.html
Week 6http://www.lahirujayathilake.com/2017/07/week-6-one-more-datasource.html
Week 5http://www.lahirujayathilake.com/2017/07/week-5-important-work.html
Week 4http://www.lahirujayathilake.com/2017/06/week-4-more-work.html
Week 3http://www.lahirujayathilake.com/2017/06/week-3-finally-some-relief.html
Week 2http://www.lahirujayathilake.com/2017/06/week-2-struggling-times.html
Week 1http://www.lahirujayathilake.com/2017/06/week-1-match-begins.html


OpenMRS

Throughout this summer I learned a lot. Whenever there were problems related to the project I had a great support from my mentor and the community. Participating in daily scrums showed me how good this OpenMRS community is. 
My mentors are the best. They gave me guidance at the first place, conducting many video conferences because of that I could carry out this project with a sound knowledge. Burke, Shaun thank you very much for your support throughout this summer. I feel really grateful to these mentors.


by Lahiru Jayathilake (noreply@blogger.com) at August 28, 2017 04:57 PM

Ankit Kumar

Week 12 - GSoC Final Evaluations

This is the last week of GSoC 2017 and we are trying to scrub our code and making efforts to design the final presentation demo. Time flied and we got many new things to learn this summer. The experience I got by interacting with the some of the brilliant minds in the community can't be explained in words.
Past week I almost completed the "Patient Create" component with proper validations and provided the functionality of selecting the identifier type so that this component may work for each and every one.

Link to my openmrs talk thread where whole project is described :

https://talk.openmrs.org/t/gsoc-2017-owa-generator-improvement-final-presentation/13069

Link to the project wiki :  here


Code Contributions :

Merged PRs :

1)  https://github.com/psbrandt/generator-openmrs-owa/pull/30

{
The above PR covers almost more than half of the work done this summer.
It covers :
** Introducing the use of ui-commons library.
** Use of some of the components from the ui-commons library i.e header component, breadcrumbs, notification and translate component.
** Designing new search components as per the suggestions of the community. The four search components are : Patient search, Encounter Search, Observation Search and Provider Search.
** Scaffolding the testing infrastructure for AngularJs into the Generator. Testing Environment was set up using the Jasmine and Karma Environment.
** Writing tests for all the four search components with the use $httpBackend for faking the  REST calls.
** Removing the transition superseded error by providing relevant config into the home.js file.
}

2)  https://github.com/psbrandt/generator-openmrs-owa/pull/31

{
The above PR consists of the "Patient Create Component" which consists of the options for selecting all the identifier types, all the locations and it also has the feature to generate the OpenMRS identifier through the idgen module.
I have provided all the onField validations with the red color as depicted by the OpenMRS style guide.
I have also provided a short summary at the top of the form to facilitate a better UX.

Note :  A detailed description of this component is provided below in this blog post.
}

3)  https://github.com/psbrandt/generator-openmrs-owa/pull/29

4)  https://github.com/psbrandt/generator-openmrs-owa/pull/26

5)  https://github.com/openmrs/openmrs-module-owa/pull/51

6)  https://github.com/psbrandt/generator-openmrs-owa/pull/25

7)  https://github.com/psbrandt/generator-openmrs-owa/pull/23




Final Presentation demo video (covers whole project in brief) : 



Demo for the Patient Create Component

Previously, it was planned to devise an easy way to introduce the FHIR module into the generator, but as REST api's are widely used today, so we decided to take suggestions from the community and after that we agreed upon the proper use of REST API into the generator.

I then created a patient search component having following features :

** Includes two steps having text field of varying size (as per the length of the input characters)

** First step includes the fields which basically needs the patients personal details like Name, Age, Address, Gender, etc. (address fields are optional hence hidden by default)




** The second step includes a select box which contains a list of all the identifier types (fetched by querying the REST API's).

while OpenMRS ID is selected as an identifier



while Old Identification Number is selected as an identifier




** Once an user selects an appropriate identifier type, he/she will get the form field as required. for example, in case of the identifier "OpenMRS ID", we only need the one identifier but in case of other identifiers, we need one extra field apart of that "OpenMRS ID Identifier" field (as shown above).

** As the OpenMRS Identifier uses the LuhnMod30Validator Scheme, hence I have also provided an option to generate the openmrs identifier through the idgen module by querying as below :

localhost:8081/openmrs-standalone/module/idgen/generateIdentifier.form?source=1




** have proper onField validations with the colors mentioned in the Openmrs style guide.




** Apart from the onField validations, a short summary of the response is also shown at the top of the form (so that an user could get the idea of what actually happened after submitting the form)

** All the summaries are placed into proper colored div boxes i.e green color for the success and fade red for the errors boxes (all are according to the openmrs style guide).

Demo for the error and success summaries


**Note : While creating the patient create component, I had also shown the proper use of breadcumbs and a good example of ui-routing by placing a link at the home page and then changing only the end hash element of the URL (for this I used the ui-sref like below) :

http://localhost:8081/openmrs-standalone/owa/demo/index.html#/create-patient


Proper use of breadcrumbs:




My future plans on this Project


** To add a ul form breadcrumbs design to the patient create component

** To add Angular 2 scaffolding


Thanks, 
Ankit Kumar

by Ankit Kumar (noreply@blogger.com) at August 28, 2017 06:36 AM

Xu Hao

Google Summer of Code 2017 with OpenMRS

Google Summer of Code is sponsored by Google, which aims to allow students to writing code and learning about open source development while earning a stipend with their summer break. There are many amazing projects that you can select your favourite. If you are accepted, your organization will provide mentors for your project to help you to complete the project.

OpenMRS is a collaborative open source organization which aims to develop software to support the delivery of health care in developing countries. And In fact, there are many helpful developers, implementers and user in OpenMRS community from around the world who contribute to the OpenMRS projects.

I am glad that I am one of the students of Google Summer of Code 2017 with OpenMRS, and now GSoC 2017 is coming to an end, so I would like to make a summary of this summer vacation of my life.

Open Concept Lab Enhancement

Overview

Open Concept Lab (https://openconceptlab.org1) is the tool that we want to use in the OpenMRS community to mix-and-match shared, curated concepts (e.g. from the CIEL dictionary) with locally-defined concepts.
The goal of this project is to make UI enhancements to OCL to make it easier for OpenMRS implementations to use it to create and share content.

Main Objectives

  • Add a “Fork This Concept” feature to be convenient for user to make local edits to someone else’s concept
  • Add a graphical “Diff Viewer”. User can view the changes across concepr versions.
  • Add a “Relationship Browser” view in OCL, so user can see immediately-related concepts in an intuitive way, and quickly browse to them.

Extra Objectives

  • Fork This Mapping
  • Diff Viewer can compare different concepts to each other.

Contributions

I put all features in one pull request with each module, so there are many changes in each pull request, and mentor is reviewing it. So it needs time to be merged. Sorry for this.

Pending

Video

https://medium.com/media/3d6bc802f2d49f3deb8adb69bf49b486/href

Future Work

  • Add a “Fork This Collection” feature, e.g. so an implementation could take a form of “OpenMRS Condition List starter set” and make some local modifications.
  • Make UI more beautiful

References

Acknowledge

Time files, three months has passed. There are too many words to talk in my heart.

Firstly, thanks OpenMRS very much, OpenMRS is reponsible and helpful to students. OpenMRS arranges everything for our students, which is with the bases that I can finish my work better.

Secondly, sincere thanks to my mentor @paynejd who gave me many help to finish this project. He always be patient and helpful to my questions and problems, I can ask him for help no matter what diffculties I encountered.

In the end, thanks to Google for sponsoring the project, providing chances for our students to contribute to open source project.

Thanks

Xu Hao

by Xu Hao at August 28, 2017 03:50 AM

August 27, 2017

Shivang Nagaria

GSoC’17 — Data Integrity Module

GSoC’17 — Final Blog Post

Hello Everyone,

This post is the summery of what I did during GSoC 2017 and how you can use it along with other useful resources.

Primary Mentor: Stephen S. Musoke (@ssmusoke)
Backup Mentor: Mayank Sharma (@maany)

OpenMRS receives data from various sources which have a different implementation. It is not always possible to check the validity of the data immediately, thus the Data Integrity Module is very helpful to check the validation of the data and alert the administration if something wrong. It helps to maintain data quality.

Summary

  • Improved filtering and display of results page.

Added multiple filters, upgraded the datatables versions. Arranged various components in intuitive way.

Result Page
  • Added feature which exports filtered list of results into CSV, Excel or PDF.
Export Buttons
Exported List

Added this feature using the datatables library. Adding icons in OpenMRS was a tough task.

  • Create and Expose Module’s APIs

Most of the APIs are written but some APIs are left along with their unit tests. Learned about Test Driven Development here. Used OpenMRS Web-Services module.

  • Externalize all Labels, messages, and errors into the module

There was lots of hard-coded string in the module. Moved them to a particular file which can also be used for localization.

  • Others

Updated ReadMe of the project and few wiki pages. Added an example module which is already integrated to Data Integrity Module.
Minor fixed in patient dashboard — took me a lot of time to understood the working of widgets within OpenMRS.

What’s left

  • DINT-82: Create and Expose Data Integrity Module APIs
  • DINT-70 — Add the ability to run SQL based rules

There are the two major work left I couldn’t complete during GSoC period. Anyways, I’ll keep contributing in OpenMRS with the focus of completing these tasks first.

Contributions

Pull Requests

  • DINT-73: Improve filtering of results of results from running the rules
  • DINT-79: Update README
  • DINT-77: Add dashboard widget definition
  • DINT-76: Add capability to export rule violations to CSV and/or Excel
  • DINT-80: Externalize all Labels, messages, and errors into the module
  • DINT-82: create and expose API of the Data Integrity module — Work in progress
  • UICM-76: Need to update version of Datatables.
  • DINT-77: Dashboard Widget — Should show the note for the result by default
  • AC-408: Write Introduction (Android Client User Guide)
  • Android Client User Guide Readme updated.

Issue I’ve opened

  • DINT-82: create and expose API of the Data Integrity module.
  • RA-1382: Patient Dashboard — buttons shift below if text beside it is very long
  • DINT-79:Update Data Integrity Github README
  • DINT-78: Update Data Integrity Wiki Page to reflect latest updates
  • UICM-76: Need to update version of Datatables

Video

After last midterm evaluation there wasn’t much visual addition so I’ve used the same video.

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

Experience

I have learned lots of things that I couldn’t even count. From Webpack to sass, Hibernate to Test driven development, etc. I found mentors and OpenMRS Community is very helpful whenever I got stuck somewhere or whenever I need any feedback.

Before GSoC, I haven’t contributed to any OpenMRS module and it took me a lot of time to understand the architecture and working of OpenMRS. During the community bonding, I was struggling to set-up data integrity module on my machine. Mentors and especially, @ssmusoke was very patient and encouraging. He helped me in every way possible in each and every time I asked for help or guidance. Overall it was a great fun and learning experience.

There is a lot of work needs to be done and I really love contributing to OpenMRS so I will keep contributing.

Thanks Stephen(@ssmusoke), Daniel(@dkayiwa), Darius(@darius) for you help. Thanks OpenMRS for such a wonderful summer :D

Resource

by Shivang Nagaria at August 27, 2017 01:52 PM

August 26, 2017

Jai Tatia

FINAL REPORT GSOC-2017 [Generic Tagging Mechanism]

Generic Tagging Mechanism


Primary mentor : Wyclif Luyima
Backup mentor : Burke Mamlin
Student : Jai Tatia
Project wiki : Link To Wiki


Overview
OpenMRS has always lacked a mechanism that allows users to annotate domain objects with simple text labels/tags, these labels can be useful in various ways e.g to group data and generating work queues. The goal of this project was to provide a tagging mechanism in OpenMRS that cuts across all domain objects.


Objectives

There were changes made to the objectives midway based on feedback from the community.

  • To create a generic robust Api which will interact with the database and can be used for tagging OpenMRS Objects. (COMPLETED)
  • To create a Rest Resource to expose the module and to be able to make Rest Calls to obtain tagging related data. (COMPLETED)
  • To create a UI fragment extension to the second Column Fragment of the clinician facing patient dashboard, for performing simple functions such as adding, removing and viewing tags. (COMPLETED)
  • To add a feature where-in clicking on a tag redirects to a page where all Patients having that tag are listed. (COMPLETED)

Implementation
The following pages cover the implementation details, including rest calls and the user interface.
http://wiki.openmrs.org/display/docs/Generic+Tagging+Module
https://wiki.openmrs.org/display/docs/Generic+Tagging+Module+-+Technical+Documentation
https://wiki.openmrs.org/display/docs/Generic+Tagging+Module+-+User+Guide

Video Presentation:  https://youtu.be/v6fJNYRR0_c

Commit History

https://github.com/openmrs/openmrs-module-tag/commits/master?author=jtatia

Main Project Link

https://github.com/openmrs/openmrs-module-tag


Other Resources

Project Documentation: https://wiki.openmrs.org/display/docs/Generic+Tagging+Module
Talk Discussion: https://talk.openmrs.org/t/rest-api-for-generic-tagging/11522

Blog History


by jtatia at August 26, 2017 05:42 PM

Reuben Varghese

GSoC 2017 — Add-On Index Enhancements | Gist of work done

Add Ons Enhancements

Primary mentor : @darius
Backup mentor : @mseaton
Student: @reubenv
Project wiki: Link

Overview

This project aims at making certain changes to the existing OpenMRS Add Ons infrastructure thereby making it fit as a complete replacement for the existing OpenMRS modulus. The main motive behind this project is to be able to completely retire OpenMRS modulus whose codebase has become tough to maintain. OpenMRS Add Ons also supports OWA’s which is a vital feature that Modulus lacked. The developer is now free to host his module in any of the supported hosting sites while Add Ons does the job of adding it to the OpenMRS module index. Add Ons also gives the freedom of choice of hosting location in hands of the module developer. Add Ons is built on a light framework and hence is hopefully easier to maintain as compared to Modulus.

Objectives:

  • (Front-end) Allow a user to find add-ons that are compatible with their particular version of OpenMRS
  • (Backend) Support for indexing Modules and OWAs that are released as GitHub Releases
  • (Front-end) Show a list of most-active or most-downloaded modules
  • (Backend) Add new Rest end points for getting module by its Package Name and also add the Package
    Id as metadata to the details of a module
  • (Backend) Improve Search algorithm used
  • (Front-end) Improved utility of tags in add-ons
  • Ensure smooth migration from using modules.openmrs.org as the primary data source to Bintray
  • Ensure Add-Ons is live by the end of GSoC period

Final Video Presentation

https://medium.com/media/85828c53a9974fa0b3f4198b9e563819/href

GSoC Contributions

openmrs/openmrs-contrib-addonindex

Other Resources:

Project Documentation: https://wiki.openmrs.org/display/projects/Add-On+Index+Enhancements+Project
Talk Discussion: https://talk.openmrs.org/c/projects/add-on-index
Blogs: Medium blog

Experience:

I must admit that this has been by far one of my most productive summers yet. I loved every moment of working for this organisation. There have been so many nights, I was up all night implementing features, not because I was forced to but because I was enjoying it. I would like to especially thank @darius for his immense support, help and patience. He has been patient enought to review all my silly mistakes and poor coding habits. He is a person who clearly stands by this quote : “The finest steel has to go through the hottest fire”. He ensured that I fix each and every minute detail in my PRs so that I won’t commit those silly mistakes again. I must admit that my coding style and knowledge has surely improved greatly. I also wish to thank all of the other wonderful members for helping me get involved in this community.

Though GSoC is coming to an end, my contributions to this community will continue for a long time. So don’t miss me just yet

by Reuben Varghese at August 26, 2017 05:28 PM

August 25, 2017

Suthagar Kailayapathy

OpenMRS SystemAdmin Open Web App

GSoC 2017 — More Meta Management in Admin UI

Module Management

System Information

Manage Scheduler

For more project information,

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

by Suthagar Kailayapathy at August 25, 2017 05:22 PM

August 24, 2017

Jude Niroshan

There is no project type called Reference Application.

There is no project type called Reference Application. There are only platform modules. Platform modules are the ones which runs on the OpenMRS platform. FYI, there is a platform module called “Reference Application”. But this is just another typical platform module.

openmrs/openmrs-module-referenceapplication

by Jude Niroshan at August 24, 2017 07:48 AM

August 22, 2017

Jude Niroshan

Shivang Nagaria

APIs, TDD & OpenMRS

Hello Everyone!

Last week I continued working on DINT-82 which is going to complete soon, the complex stuff is done, just need to build on it.

This week is 12th week— i.e. last week of GSoC. I have learned lots of things during this period of 4 month (including 1 month of community bonding). I will include all the things I learned in my final post of GSoC’17 .

Coming back to DINT-82, I had real problem testing the REST APIs I was building. Basically, these APIs are written in Java and there isn’t any default hot-reload support for this so testing them every time you make a change was a real pain. Finally, tired of restarting server again and again I asked my mentors what can we about it ? Darius came to my rescue — I was introduced to test driven development. It is a great method for test if being developed feature is working as it supposed to.

I also learned that how can you mock the database and use it for testing, you just need an xml file with the data.

That’s all for now. Thank!

Useful links:

by Shivang Nagaria at August 22, 2017 08:25 AM

Jude Niroshan

Google Summer of Code with OpenMRS — Final Report

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:

Final Presentation (OpenMRS talk thread post):

GSoC 2017 - Built-In reports for Reference Application | Final Presentation

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

Mid-term presentation

https://medium.com/media/52cc1e7acdb7f367fea6efff5a08b01e/href

Basic Reports:

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

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 12 [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

Demo (Created for mid evaluation. Prioritize the report generation hasn’t included) :

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

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

Google Summer of Code 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 Open Web App view. More Metadata Management in Admin UI project is one of those projects which are designed to migrate some of these administrative functionalities to the modern open web app view. In the More Meta data Management in AdminUI project, We focused on this following functionalities,

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

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

More Metadata Management in AdminUI - GSoC 2017 Project - Projects - OpenMRS Wiki

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

Demo Presentation

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

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.
Some of the Manage Module’s screens

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

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
Some of the Manage Scheduler Screens

Resources

OpenMRS talk discussions

You can get more information about the projects development workflow using those talk threads

GSoC 2017 - More Metadata Management in AdminUI

REST Implementation for Scheduler in Legacy UI Module

Manage Scheduler Implementation on SysAdmin OWA

New REST Implementation for SystemInformation

System Information Page Interface Modification

OpenMRS JIRA Tickets Information

Created and worked tickets during the project development

[OWA-21] Implement Module Management Functionalities in OWA - OpenMRS Issues

[OWA-22] Implement System Information functionality in OWA - OpenMRS Issues

[OWA-24] Modify System Info Page - OpenMRS Issues

[OWA-25] Implement Module Details view page - OpenMRS Issues

[OWA-26] Integrate with OpenMRS Add-Ons to get module updates - OpenMRS Issues

[OWA-27] Implement Manage Scheduler functionalities in OWA - OpenMRS Issues

[RESTWS-673] Implement REST services to Manage Scheduler functionalities. - OpenMRS Issues

[RESTWS-674] Include More Test cases for ModuleController1_8 in REST Module - OpenMRS Issues

[OWA-31] Implement Drag and Drop module upload feature - OpenMRS Issues

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

Code Contributions

REST Web services module

SystemAdmin Open Web App

suthagar23/openmrs-owa-sysadmin

Get more Open Web App Screens here,

OpenMRS SystemAdmin Open Web App

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