Developing the "OCL for OpenMRS" Application

(Ian Duncan Abidha) #384

Hello Community,

We are excited to announce the 12th sprint for Open Concept Lab for OpenMRS(OCLOMRS). The sprint planning session is scheduled for today Wednesday 28th November 2018, from 5:00 PM to 6:00 PM EAT(East African Time). I will update you with the link to the session call 30 minutes before.


CC: @Darius @dkayiwa @akanter @ianduncan @Tittoh @stoneCoder @Desmond @abulojoshua1 @Collinewait @c.antwi

(Cintia Del Rio) #385

Not sure what wasn’t clear.

I said:

And Rafal answered:

So I thought it was pretty clear that I’d be doing that.

I added the CORS change (allow DELETE) to OCL QA.

Note: STG and PRD do not have CORS configured. It’s not a difficult change, just keep in mind it’s simply not there.

(John Joshua Abulo) #386

Hello, community

I hope this finds you well, this is to bring to your notice that the OCL frontend development team of OpenMRS is currently experiencing challenges with the application backend. All application API calls are failing and returning a 401(unauthorized). The login API endpoint is also failing to log in any user and returns a 404 (not found) error message and the admin user we were previously using cannot login too. Kindly provide any necessary help.


CC: @Darius @dkayiwa @akanter @ianduncan @Tittoh @stoneCoder @Desmond @abulojoshua1 @Collinewait @c.antwi

(Rafal Korytkowski) #387

The admin user was not properly created after @cintiadr’s redeploy. Fixed now!

(Allan Guwatudde) #388

Hello Community,

I would like to remind you that the 12th sprint planning will start in next 4min, you can join the demo using the following Google hangout link:

(Titus Kipkemboi) #389

It is working as expected now. Thanks. :slightly_smiling_face:

(Cintia Del Rio) #390

Is the DB or variables in ansible wrong? Running ansible shouldn’t break anything.

(Rafal Korytkowski) #391

Yes, there was an error. Corrected it already.

(Ian Duncan Abidha) #392

Hello community,

Am trying to login into the OCL application but am getting this error.

but when I try creating an account with the same username, it says that it exists.

cc @raff @dkayiwa @ianduncan @Tittoh @stoneCoder @Desmond @abulojoshua1 @Collinewait @c.antwi

(Allan Guwatudde) #394

Hello everyone, OCL Backend is currently down. @darius @dkayiwa @ianduncan @Tittoh @stoneCoder @Desmond @abulojoshua1 @Collinewait @c.antwi

(Rafal Korytkowski) #395

@sheriff, it’s not for me at the moment. However, note that it’s a QA environment, which is reset quite often (with some downtime expected). Please always check, the status of the last build at If it is green, but you cannot access the environment then do let me know.

Also we now have a demo instance at, which you can consider using instead of QA. It’s down only once every 24h and is more stable.

(Andrew Kanter) #396

Did we figure out how to get sample CIEL data loaded into the QA environment? The current demo does not seem to include mappings.


(Rafal Korytkowski) #397

@akanter, how did you come to that conclusion? Sample CIEL is loaded on each reset. Both qa and demo have some 1,4k+ mappings. See and

(Andrew Kanter) #398

Apparently the mappings are not showing up for all the concepts. We should have the mappings for each concept that we have in the set (and all of them for those concepts). I didn’t see one for Anemia due to blood loss. Also, I can’t get into the qa site or the right now due to an error.

(Jonathan Payne) #399

The mappings in the sample CIEL set are not complete, so that would explain why some are missing. It is just taking the first 2k mappings that it finds and it imports the ones that overlap with the first 2k concepts.

(Andrew Kanter) #400

Any reason why we didn’t just import all the mappings for the 2K concepts in the set?

(Jonathan Payne) #401

Only because that’s the way the script that generates the import JSON from the OpenMRS concept dictionary works – I did not create any conditional logic to choose which mappings should be kept. It is simply taking the first 2,000 mappings that the MySQL database returns. If it’s worth spending time to modify the script, then we can plan for that, but it was never a priority.

(Darius Jazayeri) #402

Just now watching the last demo video. First, I like that you all got a lot of tickets done!

Some random comments:

  • Bulk Add Concepts
    • there is an option called “(Other preferred sources here)”. This was a placeholder in the mockup, and we do not want this in the real UI
    • there’s a radio button followed by a search for Other; in practice I don’t think you need the radio button
    • the intended UI here was supposed to be a text area where you can type or paste a list of concept UIDs. I see that you’ve built a “nicer” UI, but I think the workflow you’ve built duplicates the workflow of just going to add a CIEL concept. Right? Or is there something about this screen that actually support bulk operations better?
  • Subscription URL modal popup, the button should say “Close” instead of “Cancel”.
  • Add Mappings
    • I was not expecting to see this button here. I was expecting that this should behave like the OpenMRS UI, where adding mappings is done from the concept screen itself. (I.e. in the mockups there’s a Mappings To Reference Terms table.)
    • I have UX comments about how to handle internal/external in a different way, but will have to write that later. (Please reach out to me to discuss this!)
    • “internal” mappings can actually be to a different source within OCL, but you don’t allow this (and it looks like you have a dropdown which would show all possible concepts; that won’t work at all)
  • Releasing the dictionary
    • From the end user perspective, “release the first version” and “release a later version” should be exactly the same. Why do we have different behavior here?
    • The button should always say “Release latest version”
    • There should always be a popup asking for version # and optional description.
    • Releasing a new dictionary version is a significant operation, and it should require confirmation.
    • The most recent release should be at the top of the list, but in the demo, the first version you release is above the second version you release.
    • In the demo, the first time you click release, it automatically gets the name “latest”. This seems completely wrong to me and I’m afraid that the business logic implemented here is incorrect. Please let’s talk about this to clear up any misunderstandings.
  • Footer
    • I’m not sure I like this. What’s the reason for adding this, from the perspective of the end user? What info are they going to get here?
    • This app is end-user facing so there should be no API link
    • This code is not copyright of Open Concept Lab, it should be copyright of OpenMRS. But also I don’t see any value in telling the end user this.
    • End user does not need a link to the license
    • “About” could be a useful link if we actually have a good about page, but do we have one yet?
    • My suggestion is to remove the footer completely. We could have a subtle link somewhere on the home screen to learn more about the application, but we don’t need to include this on every page.
  • Searching through a dictionary
    • Nice idea! However it seems like a lot of this is duplicating what’s already supported in the sidebar (i.e. you can already filter by Source and Class there). We should change this to only support searching/filtering by name.
    • Source column is wrong. Source should be something like “CIEL”, but what is being displayed in that column looks like a UID. (Also it’s wrong in the sidebar.)
  • Improvements for mobile
    • The improvements are good eventually, but note that the MVP does not include having this application work on mobile. So please in the near future if people suggest more changes to improve the mobile experience, you can create tickets, but put them in the backlog for later.

Now that I’m listening to the discussion around minute 23 of the recording, about UI of mappings…

  • It’s good that you identified confusion about how to do mappings, and you realized that there’s a difference between the mockups and the back end API.
  • It’s good that you met and came up with a consensus way to implement this from your team
  • But it’s very bad that you went ahead and implemented this without showing it to me (i.e. the product owner) first. Because I intentionally mocked it up to be different from the backend API, and different from the way it’s implemented in traditional OCL. (It should be implemented in a way that’s consistent with the OpenMRS back-end API that we’re creating concepts for.)

I really really want you to reach out to me with any questions. I want to be an involved product owner, but since I’m not colocated with you, and we’re in very different time zones, I need your team to proactively reach out to me with questions. If you’re ever not 100% sure about the way to proceed with some design issue, then ask me on Talk.

Also, since we have just had a daylight savings time change in the US, the sprint demos are now at 6am my time, which I have trouble making 100% of the time. And we should be talking more than once every 2 weeks anyway. Can we set up a regular catch up time, even with just a subset of the team, or just one person (the current sprint lead)? Times that would probably work for me are these (I don’t remember where you all are):

  • 7am Seattle = 6pm Nairobi = 4pm Lagos
  • 8am Seattle = 7pm Nairobi = 5pm Lagos
  • 9pm Seattle = 8am Nairobi = 6am Lagos (probably too early if there are folks in Nigeria)
  • 10pm Seattle = 9am Nairobi = 7am Lagos
  • 11pm Seattle = 10am Nairobi = 8am Lagos (I can’t do this time too frequently)

(Andrew Kanter) #403

I’d also be happy to try to make the time with Darius if I can manage it from Chicago.

(Ian Duncan Abidha) #404

@akanter, would you kindly provide us with your favourable times so that we compare and come to a convenient time ?

@darius, we are currently working on the feedback given.