Developing the "OCL for OpenMRS" Application

(Alex Mochu) #222

Yes this totally makes sense. I will be reaching out to @ball and @akanter and engaging them whenever I will be faced with a similar challenge.

(Rafal Korytkowski) #224

Sorry, I didn’t notice your message. I’m planning to fix that this week, most likely tomorrow.

(Rafal Korytkowski) #225

Fixed and deployed to QA for now. I’ll deploy to staging by the end of today.

Simply POST username and password to to get the token.

(Cintia Del Rio) #226

@raff I’m seeing a huge CPU spike in STG

This is CPU on the last 4 hours: 34%20PM


The containers are unhealthy and dying. Is it related at all?

(Rafal Korytkowski) #227

Thanks @cintiadr for keeping an eye on that! It’s not related. I’m rebuilding a search index thus the huge CPU spike. I should be done by tomorrow.

(Alex Mochu) #228

Thank you @raff for resolving the login with username/password authentication issue on the Backend(oclapi). @nesh can now be able able to resume working on this ticket OCLOMRS-159 which is about creating a UI to consume that login route. @darius @dkayiwa

(Kelvin Kariuki) #229

Thanks, @raff for the fix. I will now begin working on the OCLOMRS-159 .

(Alex Mochu) #230

Hello community,

As we come to the end of sprint seven, could you please vote for the best date and time for our Demo.

Thank you.

cc @darius @dkayiwa @emmabaye @nesh

(Muhozi Emery) #231


I’m Muhozi Emery, a software developer at Andela. I will contribute to OCL for OpenMRS, I’ll be doing mostly Javascript/React. I’m glad to join you and looking to work with you.

My username is @muhozi

Thank you.

(Alex Mochu) #232

@muhozi Welcome to :openmrs:, we are glad to have to you :hug:.

(Daniel Kayiwa) #233

Did you configure this correctly? I tried to select both dates but failed. Could only choose one of the two.

(Alex Mochu) #234

@dkayiwa I had limited a participant to only vote once. But I have reconfigured the poll, you can now select both dates.

(Michael Mbugua) #235


I’m Michael Gitau. A software developer(Python and Javascript) at Andela here in Nairobi-Kenya. I’m very excited to join the OpenMRS community and contribute to OCL. Looking forward to work and interact with you.

username @michy

(Alex Mochu) #236

Hello Community,

I need some more clarification on this ticket OCLOMRS-192. The ticket is about copying concepts from another dictionary.

My question: is the user supposed to copy concepts from other dictionaries that he/she owns/created or is are they user supposed to copy concepts from all public dictionaries???

cc @darius @paynejd @burke @akanter @dkayiwa @nesh @emmabaye @muhozi @michy

(Kelvin Kariuki) #237

Hello Community,

I need clarification on the OCLOMRS-173 ticket. From the ticket, I am required to enable a user to specify the answers while creating a Q&A concept. Is there a provision in the backend or the database where these answers are stored? I checked the MVP doc and there was no guide as to how this was supposed to be implemented.

cc @darius @paynejd @burke @akanter @dkayiwa @alexmochu @emmabaye @muhozi @michy

(Darius Jazayeri) #238

Questions and Answers are both concepts. So for example you could have:

  • “blue” is a concept (datatype=N/A)
  • “favorite color” is a concept (datatype=Coded, possible answers = “blue”, etc)
  • You would have to create “blue” first, in order to be able to add it to “favorite color”.

OpenMRS and OCL model these a bit differently:

  • in OpenMRS, a concept has answers, and the concept_answer SQL table gives a many-to-many mapping from questions to the answers
  • in OCL, there is a mapping between the question and answer concept

For example the traditional OCL UI looks like this:

And behind the scenes here is the Q-and-A mapping from Roof Material to Cement:

        "retired": false,
        "map_type": "Q-AND-A",
        "source": "CIEL",
        "owner": "CIEL",
        "owner_type": "Organization",
        "from_concept_url": "/orgs/CIEL/sources/CIEL/concepts/1290/",
        "to_concept_url": "/orgs/CIEL/sources/CIEL/concepts/1943/",
        "to_source_url": "/orgs/CIEL/sources/CIEL/",
        "to_concept_code": "1943",
        "to_concept_name": "Cement",
        "url": "/orgs/CIEL/sources/CIEL/mappings/583c6c3e65baaa00076d337a/"

We want our “OCL for OpenMRS” UI to behave like OpenMRS does, in other words, a user of our application should believe that questions have answer like is the case in OpenMRS, even though on the back end the representation is not quite like that.

So, the way to implement this is that mappings of type “Q-AND-A” should get special treatment in our application: they should not be displayed alongside other mappings, but instead displayed as “answers to this question”.

Does this make sense?

(By the way, “set membership” also works just like this, i.e. the OpenMRS and OCL internal representations are different, but we want our app to appear as if it has the OpenMRS behavior, even though it has the OCL back end.)

(Alex Mochu) #239

@darius Please also look into this.

(Andrew Kanter) #240

I believe it should be all public, openMRS-qualified dictionaries since the concept has to pass validation.


(Andrew Kanter) #241

I would agree with this interpretation. The OCL platform flattens all of those relationships into a MAPPING. The OpenMRS implementation of that data should transform the OCL data into OpenMRS compliant representation. So transforming the mappings of Q-AND-A to answers and CONCEPT-SET to concept set members. You have to be sure to get the directionality correct (which is the parent and which is the child/member/answer).

(Darius Jazayeri) #242

Sorry @alexmochu that I missed your earlier message, and thanks for pinging me again!

Actually, we do not want to implement the “copy concepts from another dictionary” link on that screen. I had intended to make a newer mockup without it, but I guess I didn’t get around to it. (This comment talks about why we don’t need it.)

We do want to (in the MVP or soon after) implement the workflow of “Start a new implementation dictionary by making a copy of an existing starter template”. On the create new dictionary screen there would be an option to “start by copying another dictionary” as is shown on that mockup. (The idea here is that if the dictionary you are copying from has 3 of its own concepts + references to 7 CIEL concepts, then a new dictionary that you make as a copy of this would have references to 7 CIEL concepts + references to 3 concepts in the other dictionary. I can go into more detail here if you want.)