OpenMRS iOS Client Extensions project idea

Hi Students,

Glad to inform you that OpenMRS is an official Google summer of code mentoring organisation for the 9th year! Since we are officially IN now, I would like to give you (for the potential students) couple of hints - generally what we are looking about you guys in the selection stage and specially for this iOS project.

First please read the information i have mentioned in the wiki itself.

I prefer the interested students to follow these steps before applying with a proposal for this project in 16-27 March 2015.

  1. First, try to crack some intro tickets of OpenMRS trunk - so you will get to know about the server side of OpenMRS (the HQ of our tiny client!) 1.A. Then try to understand how REST service calls helps to connect client with server side.: see REST module
  2. Then try to crack the current iOS code base and attempt to find bugs - so you will get comfortable with the current iOS code base.
  3. Then go and research about how you gonna implement the things mentioned in abstract section of the project wiki: mainly research the ways how you could implement the ODKClinic for iOS by analysing how Android project does that.


(1) What would be a good starting point for me to gain necessary skills required for this project?


(2) Could you please guide me through the process?

Get familiar with:

(3) Could you provide me some simple bugs to start with?

  • For the moment, by bugs i mean core tickets not iOS bugs, please see :
  • intro tickets are listed in that wiki. More importantly this will increase your chances for getting selected (if you find them really hard to fix, atleast try to do some patches/PRs and show us your effort!)

Important: Now start to get in touch with our community by joining our IRC (Freenode #openmrs) & dev mailing lists (dev■■■■■■■■■■■■)

If you have any problems or need further clarifications related to the project “OpenMRS iOS Client Extensions”, just ask them below.



One thing I’d like to stress is that you’ll need an OS X machine with Xcode 6 installed to execute this project. A device running a current version of iOS (7 or 8) and an Apple developer account (so that you can test changes on your device, rather than the simulator) would be a huge plus as well.

Now would be a great time to make sure you can build the project on your computer. If you can’t, it’s probably my fault - it’s a new project and hasn’t been tested on very many development configurations. Please, post here with any questions/comments.


hi, I am interested on your project “OpenMRS iOS Client Extension”.I read your Documentation given about this project.I am new to GSOC and new to OpenMRS.I would like to know what are the steps i should following this process.


Hi Heshan, Glad to know your interest, Please refer to the FAQ section of the above post for answers related to your question.

1 Like

Hi, I have encountered an error when building the project, there was a missing file called “VisitDetailViewController.swift” in OpenMRS-iOS folder of the project, after removing it now I could run the app successfully.

When I try to add a patient from “Add Patient” option and after filling the form and pressing the done button, app shows an activity indicator for a while and then disappears also the interface remains the same, when I try to search for the patient that I entered, the patient is not there. I don’t think this is the normal behavior of the app. I have a doubt there, can someone help me to clarify this.

1 Like

Hi Harsha, I am intrested in this project, I have MacOSX 10.9 with XCode installed. I am little bit experience with iOS. I read the building procedure. Is that work in simulator without any issue ? Or I have to use actual device?

1 Like

Hi Tharindu, Glad to hear you have able to build and run the current code base. Could you please share the NSLogs you have so we can rectify the scene. (paste it on a github gist or pastebin and link it here) If possible please file an issue ticket (if you can reproduce the issue many times) at here: @parkererway any ideas you might have?

Hi Vineet, Thanks for your interest. The current code base works perfectly on iOS Simulators as well tested on all major iPhone devices. But you don’t need an iPhone to take part in this project, just make sure you test everything really well on simulators. So no issue.

Would you mind creating an issue for this in JIRA? I think I know what it is, but it’s nice to have something in the bug tracker.


1 Like

As long as you have Xcode 6 installed (as part of the codebase uses Swift, and you need Xcode 6 to compile that), you’re good to go. The simulator is perfectly fine for a project like this :slight_smile:

1 Like

Harsha, here I have attached the debug area output of the app when it is on Device and also when it is on Simulator. I will file an issue ticket.

Hi Parker, I created an issue regarding what I mentioned above.

1 Like

Hey I’m interested in applying the extensions of the iOS app, I have made some iOS apps and contributed to also on github and made a pull request to the OpenMRS iOS app.

I have some suggestions for the app, the suggestions:

  • All the source files in one directory making it harder to navigate, we can separate them in a nicer way and not a very sophisticated one to:

    • Model (for handling offline saved patients and Coredata functionalities)
    • Services (for handling the web services and calling the REST API)
    • Views for the view controllers of the app
  • Adding a .gitignore file to ignore the pod directory as it becomes really messy after $pod install

I have a questions too, Is this a project of priority to OpenMRS?

Thanks in advance :smile:

1 Like


About “Reposition the activity indicators to provide a better user experience.” - Improvements to the iOS app

The activity indicators already visible in the center of screen except for a few places like search Where else do you see this problem?


1 Like

Hi Yusuf,

Thanks for your interest on the project. also i appreciate most of the enhancements ideas you mentioned. Regarding your question well, its kind of priority project now since we have significant amount of iOS user base. :smiley:

Please try to get familiar with ODKClinic code base and design ASAP & let me know how you gonna implement that in iOS project (in gsoc proposal too), that part also gonna be another major objective of this project.

Actually I’m working on that today already and am going to deliver a draft proposal to you about it tonight or earlier tomorrow.

1 Like

I did some research which took way way more than expected

I ended up with conclusions that I need to verify and some questions:

a) First the ODK solution isn’t applicable in iOS, there’s no ODK Collect on iOS, I found a solution that’s paid that uses ODK but it’s used in safari browser, Should I continue research there?

b) Other than that basically I get forms through the rest API and parse it and represent it with a beautiful UI in the app.

b-1) Do I work with the form module existing on OpenMRS or with xforms module as the android app already do?

b-2) I played with the API and everything worked just fine, but when tried to get full form I get error: "“message”:“Unable to convert object into response content” -Link:

c) I upload the filled forms explicitly as encounters?

d) Where can I access existing xforms? I tried on “”, used in ODK Clinic, but that didn’t work -URL call used: “

e) Dealing with field type concept is quite straight forward, what about other types like miscellaneous set?


Hi Yousef,

Nice work so far. a) this isn’t relevant, yes stop going through that. b) Yes! and submit them back to server too. (2 way sync) b-1) yes Xforms. b-2) Please discuss this on openmrs dev list: dev■■■■■■■■■■■■ c) yes as encounters. d) Please discuss this on openmrs dev list: dev■■■■■■■■■■■■ or consult dkayiwa on our IRC channel. e) I don’t understand this question ?

1 Like

Hi Harsha,

Does this mean that implementing ODKClinic is not going to consider anymore in this project?

Tharindu, what made you think like that? :smiley: ODK gonna be a major objective of this project.