Developing the "OCL for OpenMRS" Application

(Godswill Onuoha) #551

Hello Community,

I’m happy to announce successful weekly sync with Darius, Andy and the team. Thanks to everyone that made it. For those that couldn’t attend, please find the link to the video recording here


cc @darius, @akanter, @dkayiwa, @shine, @collinewait, @samdiano, @sheriff, @brucemakallan, @judeatu, @ayesh

(Darius Jazayeri) #552

Personally I do not want this because I usually join these calls from my phone, and I need to mute/unmute a lot, but uberconference is generally less reliable for mute/unmute, and also for watching the screenshare.

That said, I’m curious, isn’t it possible for the Andela folks to consolidate in a meeting room such that you take fewer of the 10 slots in the call?

(Cynthia Antwi) #553

Good point of the Andela grouping together. This would be ideal

(Cintia Del Rio) #554

I will check after I come back from holiday, @shine

But again, can you please add the full headers (including pre-flight OPTIONS requests) AND body for both request AND response?

To give me context, can you also explain exactly what’s the response you expected?

Remember I’m not a front end developer, so I need very specific directions on the request you are doing, the response you are getting and the response you’d like to get.

You can add them to if you prefer. But full context is much appreciated, otherwise I can’t guess.

(Cintia Del Rio) #555

If you can reproduce the same request with curl, that’s the ideal situation.

(Darius Jazayeri) #556

@shine I just clicked on this in my browser and opened the Network tab in chrome’s dev tools and I see this:


Isn’t this working exactly as desired?

(Godswill Onuoha) #557

@c.antwi I’m sorry you couldn’t join the call. I just checked UberConference and the free plan has a maximum of 10 participants. However, we will look into this further to before the next sync, as to accommodate more participants.

cc: @dkayiwa, @shine, @collinewait, @samdiano, @sheriff, @stonecoder, @brucemakallan, @judeatu, @ayesh.

(Darius Jazayeri) #558

This was probably not directed at me but here:

$ curl -v
> GET /orgs/CIEL/sources/CIEL/concepts/?limit=10 HTTP/1.1
> Host:
> User-Agent: curl/7.54.0
> Accept: */*
< HTTP/1.1 200 OK
< Server: nginx/1.10.3 (Ubuntu)
< Date: Fri, 25 Jan 2019 17:08:09 GMT
< Content-Type: application/json; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Vary: Accept, Cookie
< next:
< ETag: "f3ca94bee1d6324709e27e662c46f952"
< num_found: 1217
< offset: 0
< num_returned: 10
< previous: None
< Access-Control-Allow-Methods: GET, OPTIONS, POST, PUT, DELETE
< Access-Control-Allow-Headers: num_found,num_returned,offset,authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range
< Access-Control-Expose-Headers: Content-Length,Content-Range

So as far as I can tell this is working correctly…

(Darius Jazayeri) #559

@stonecoder, OpenMRS has a paid Uberconference plan, and we use this for most community calls.

However please see my comment.

(Godswill Onuoha) #560

@darius thats a good idea. We (Andela team) will be joining from 3 locations, thats 3 slots.

cc: @dkayiwa, @shine, @collinewait, @samdiano, @sheriff, @brucemakallan, @judeatu, @ayesh

(Cintia Del Rio) #561

Hi @shine,

As you have realised yourself, when you send the data via postman, the headers are there. I can confirm @darius experiment, using curl returns the correct headers also.

When you run your AJAX request,

are the headers there?

If they are, it’s probably a client side configuration. Blindly googling got me this answer, could it be related?

(collins Ijeomah) #562

Thanks, I will look into this.

(Godswill Onuoha) #563

Hello Community,

Here is a summary of issues identified during the weekly sync.

Issues Identified:

  • Authentication logic error: When you first load the page, it shows an error saying the internet is not available
  • Partial word searching not working on dictionary concepts interface
  • Clearing content of search field doesn’t refresh the page on dictionary concepts interface. The old search results are retained.
  • Datatypes and Classes sidebar filters on dictionary concepts page do not work independently of the search field on the page
  • The concept preview does not show synonyms
  • Convenient set concepts preview is showing mappings instead of “set members “ and answers
  • Returning to dictionary concepts page after adding Ciel concept does not refresh the page to show the added concepts
  • The default value for the number of rows on dictionary concepts page should be like 20, not 5
  • Add mappings (Related Concepts) not properly implemented on Create Concept page:
    • The interface should be consistent (header-body table format) across the page
    • First (source) field should be case insensitive autocomplete of existing sources
    • The field for code should not be auto-populated. Should allow for typing in a code (belonging to the selected source)
    • Search widget of concept name autocomplete should also show codes alongside name.


  • Design New Mockup for concept preview modal to include synonyms (Darius)
  • Perform user acceptability (workflow) test. Setting up openMRS and using the existing module to download the dictionary (Team)

For further details, find the recording of the sync here (

cc: @darius, @akanter, @dkayiwa, @shine, @collinewait, @samdiano, @sheriff, @brucemakallan, @judeatu, @ayesh, @c.antwi

(Bruce Makaaru) #564

@darius @dkayiwa Would you please have a look at this bug: On OCL, both the Mulago1 and Mulago2 dictionaries were created by the same user (admin) but while I can successfully delete concepts from Mulago2, I’m unable to delete concepts from Mulago1. The bug is consistent in the backend (using Postman).

The only difference between the two dictionaries is that Mulago1, despite having all it’s concepts with "retired": false, shows the number of active concepts as zero.

The team has advised me to reach out.

cc: @shine, @collinewait, @judeatu, @ayesh, @sheriff

(Darius Jazayeri) #565

@brucemakallan a quick meta comment here: when you send a note like this asking people to investigate something for you, include a direct link to they thing they’re supposed to look at. You had it open in your browser, so it would have taken you 2 seconds to copy-paste the link here, but it’s going to take Daniel and I several minutes to to find it.

Including the URLs that you tried with Postman would be even better.

(Bruce Makaaru) #566

@darius Sorry about that. Here’s how you can recreate the bug:

  1. GET:

• It shows "active_concepts": 0


Getting a list of concepts for that dictionary will show you 8 concepts and they all have "retired": false,

• If you try deleting the reference to a concept from that dictionary, you get a response message of { message: "ok!" } but it will still be in the list


HEADERS: Authorization: Token (insert token from local storage)

BODY: { "references": ["version_url of the concept"] }

  1. GET: • It shows "active_concepts": 7 • Listing works fine (shows 7) • Deleting works fine as well (removes it from the list)

Therefore everything seems to work as expected for one dictionary but not for the other.

(Bruce Makaaru) #567

@darius Sorry about that. I tried sending instructions and URLs to reproduce the bug about 2 hours ago but the message was hidden by the spam filter (Akismet). I’m still waiting for a staff member to review the post.

(Bruce Makaaru) #568

There’s a bug that has been discovered in the OCL Backend:

A user is able to search for concepts if they provide a complete word as the search query but not if they type just a few letters.

How to reproduce the bug using Postman: (With an Authorization token)

  1. Searching for “ear” will return a list of 3 detailed concepts


Authorization: Token <get token from local storage>


        "type": "Concept",
        "uuid": "5c4199254799a2014aaeab6f",
        "id": "873",
        "concept_class": "Finding",
        "datatype": "N/A",
        "display_name": "OTORRHEA",
        "display_locale": "en",
  1. However, Searching for “ea” will return an empty array



Authorization: Token <get token from local storage>

Response: []

NB: Those are the same endpoints used by the frontend to perform the search.

cc: @darius, @dkayiwa, @judeatu, @ayesh, @sheriff

(Rafal Korytkowski) #569

For partial search plese use ‘*’ e.g.:


(Rafal Korytkowski) #570

Thanks for reporting! I’ll address that tomorrow.