Introduction:
...
I'm a self taught programmer, I do my programming now in Python for applying machine learning algorithms that I'm currently studying and web development in Django, and contributing to C++/C projects, and most of my education at college was in java, But my favourite programming language by far is Objective-C.
My Github: https://github.com/yousefhamza
I have contributed to many Open source projects including OpenMRS and other iOS app, and other projects in different domains.
...
Before | After |
|
|
Also there’s already some TODOs put by Parker that I found during working on the codebase like better handling for errors like for saving to CoreData.
...
Mockups for demonstrating the changes in v1.3:
Before | After |
|
|
| |
| |
| |
|
|
New REST APIs utilized in v1.3:
...
REST API | Functionality |
GET: http://server:8080/openmrs/ws/rest/v1/visit?includeInactive=false | Get all the active visits. |
POST: http://server:8080/openmrs/ws/rest/v1/patient/{uuid} | To edit patients info. |
...
Next you will see a mockups to demonstrate the kind of optimisations made to the UI.
Mockups:
Filling forms capabilities v2.0:
...
The app will send request to get the xforms from an OpenMRS server with xforms module installed, the user chooses a form to fill, The form is downloaded to the App as XML, then parsed and a corresponding GUI objects will be generated that’s displayed to the user to fill the form. Check the sequence diagram below.
Implementing OpenMRS specs “Mobile Data Collection Project”:
...
The presentation layer requirements is “1 question per screen interface”, And that’s what I’m going to implement here, some examples of the UI is shown in the mockups below -The example of the UI shown below is based on the demo of ODKClinic on youtube and to give an idea of how it’s going to look on iOS:
|
| |
|
|
For audio Input I will be using an external library, right now I found EZAudio to be the most popular one, but that’s subject to change in the future, example of the UI below:
XForm Controller and XForm Model:
...
Under Mobile Data Collection Project, there’s a listed description and diagrams describing the structure of of the module to be implemented in the mobile application, So I’m going to use that. And my XML Library of choice to be used in parsing will be NSXMLParser and here’s why:
It’s the default one in the iOS SDK so no overhead of using external library and reducing the application dependency.
It’s a SAX parser which is required to achieve the sequence diagram of the Mobile XForm module.
It supports XPath and Event-Driven XML.
...
*The sequence diagram below is from Mobile XForm Module Documentation.
The Application Shell:
...
New REST APIs utilized in v2.0:
REST API | Functionality |
http://server:8080/openmrs/moduleServlet/xforms/xformDownload?target=xformslist&uname=name&pw=password | Get all xforms available. |
http://server:8080/openmrs/moduleServlet/xforms/xformDownload?target=xforms&uname=name&pw=password | Get the Forms. |
http://server:8080/openmrs/moduleServlet/xforms/xformDataUpload?uname=name&pw=password | Upload filled forms. *with property xforms.useEncounterXform to True on the server to enable editing existing encounters. |
...
These diagrams demonstrate the final state of the whole iOS app.
Use-Case Diagram:
High-Level Diagram:
My time allocation for the project:
May 2015
June 2015
July 2015
August 2015
Red: working 15 hours/week -Final exams-
Yellow: working 25 hours/week
Green: working 40 hours/day
...