Provider in Platform 1.9

Provider Table is new in 1.9. Before we upgraded to 1.9, we managed our providers (i.e. Clinician, Social Worker, Nurses, …, etc.) through Users/Roles. My understanding is that during the 1.9 upgrade, it pull some of the existing providers from users and put into the Provider Table. Can someone explain how this was done?

Also, from moving forward prospectively, when a user is created as with provider role, it doesn’t have the option to specify whether it should be included in the Provider Table or not through admin/users/user.form?createNewPerson=true page. Instead, implementers need to go to admin/provider/index.htm page and look up existing users in order to add them one by one. It’s also unclear what needs to be input into the Identifier field which also allows to be null since it’s not required. What’s the reason this is not an auto-assigned identifier? During testing, it also allows to create more than one provider in the Provider table with the exact same Person.

I understand the intention of the design is using role for administrative purpose while providers are being handled through the new Provider Table. However, we need to better understand how that works in 1.9.7 Legacy so that we can update our workflow and procedure when creating new user as Provider. Can someone point to the documentation or share some information for us? Thanks!

This changeset appears to load the providers table from the users table.

Provider creation should be much simpler when creating accounts; we agree. This was addressed by PIH in their Mirebalais system when creating user accounts. A GSoc 2014 project was created to create administrative functions, but hasn’t made it into a release yet. This is on the road map for OpenMRS 2.3. I don’t believe anyone has addressed it in the legacy UI.

FYI some of the background design ideas are here: https://wiki.openmrs.org/x/FQHI

As a side note, this changeset is a perfect example of a SQL query that will not work on all databases other than MySQL /MariaDB because it uses proprietary functions.

Thanks for the background info, @darius.

This is very helpful, @burke . We need a solution for legacy UI as it’s causing more issues for our implementation. I will file some tickets to address this need.

Hey, I have filed two tickets relating to this discussion: