Looking back at notes from AMPATH, the only reference to anything close to roles & privileges I found was the desire for the Data Entry Statistics Module to have a basic view privilege that allows a data assistant to see only his/her own statistics.-BurkeOn Wed, May 9, 2012 at 9:44 AM, Ben Wolfe <b...@openmrs.org> wrote:
Dawn found this link for me:
http://notes.openmrs.org/2012-roadmap
Is has the (mostly raw) notes from the calls we had with Jembi/PIH/AMPATH.
Daniel, can you tease out the topics from that and the other text below in the next 4 hours?
Ben
Click here to unsubscribe from OpenMRS Developers' mailing list
+1 for this. We’ve run into issues with this a lot. For instance, say you have a user who should not be able to view patients, but should have access to a report of aggregate patient data that calls getPatients() behind the scenes to perform the necessary calculations. If you take away the “view patient” privilege from the user, they’ll get a stack trace when they attempt to execute the report.
This issue has been prevalent enough for us that we basically are unable to use privileges and roles for access control …
Mark
Yeah, #1 is the solution that seems to make the most sense.
There are lots of examples of this, especially as you start adding your own custom modules.
Mark
<openmrs:hasPrivilege privilege="Patient Dashboard - View Overview Section"><openmrs:hasPrivilege privilege="Patient Dashboard - View Regimen Section"><openmrs:hasPrivilege privilege="Patient Dashboard - View Visits Section"><openmrs:hasPrivilege privilege="Patient Dashboard - View Encounters Section"><openmrs:hasPrivilege privilege="Patient Dashboard - View Demographics Section"><openmrs:hasPrivilege privilege="Patient Dashboard - View Graphs Section"><openmrs:hasPrivilege privilege="Form Entry">
<openmrs:hasPrivilege privilege="View Patient Programs"><openmrs:hasPrivilege privilege="View Relationships"><openmrs:hasPrivilege privilege="View Allergies"><openmrs:hasPrivilege privilege="View Problems">
+1 for renaming “View” to “Access” (or perhaps even “Get”?), as “viewing” really makes no sense in the context of an API and confuses the issue. I think it would make sense to have the API level privileges mimic the names of the underlying methods as much as possible. I’d also suggest perhaps starting the privilege with the name of the domain object and/or service, like “Concept – Access”. I’ve always found it annoying when I’ve had to search through the alphabetized list of privileges looking for all the privileges that apply to a certain domain object.
I’m not quite sure where I fall on naming privileges after pages… but I think I’m in favor of it. I see Burke’s point, but organizing it via page allows us a fairly detailed level of granularity which could be valuable. You might want to a typical user to see one allergy list but not another… I guess the issue here is that we are using “privileges” as really a means of customizing the site based on role, rather than to define an actual privilege.
Mark
We are soon going to have a sprint on roles and privileges, during which we are thinking of dealing with the following topics:
1) Make it easy for an admin to see what privileges are needed to perform a sequence of actions.
2) Improve the page a user sees when they fail a privilege check.
3) Improve documentation on how to use privileges/roles and avoid pitfalls.
4) Implement Organizational Role as designed in this wiki page: https://wiki.openmrs.org/display/docs/Organizational+Roles
Do you feel the above topics address what the community needs, as far as roles and privileges are concerned?
Does anyone want a modernized version of the Restrict By Role module?
Do you have anything to say about the Organizational Role API design?
All questions, comments and suggestions are very welcome!!!
Daniel Kayiwa
On Behalf of the OpenMRS Community
I don't think it's a good idea to have a separate organizational role table, and I don't think this proposal has been thought through thoroughly.
I'd like to review some of the discussion that took place last spring around the HR module. At that time, what was on the table was the separation of organizational roles from privileges by breaking the link between users and providers. At that time, I proposed that the distinction be between staff and users, and intended to use the providers table as a staff table. However, this was strongly opposed by Burke and others on the grounds that providers were only those who provided services to patients and that other staff should be excluded. I was told that the use of the providers table for other staff would not be welcome, and the HR module was developed with different core table, staff, linked to person.
As I read the wiki page, the proposal addresses several issues:
* People are still confusing organizational roles with system privileges. This problem has already been solved by the split between user and provider, an organizational role provider attribute would suffice to handle issues such as the letters going out with the wrong signature.
* There are functional distinctions between providers of the same provider type which should be available for selecting pick lists. This can also be addressed by provider attributes or tags/categories.
* People are being miscategorized for administrative reporting (doctors/PAs/nurses). During the HR discussion, the point was made repeatedly that administrative reporting was outside the scope of an EMR. To the extent that a provider attribute would not suffice, this should bring the whole issue of the role of OpenMRS in administrative reporting back into play.
* People have different organizational roles at different locations. This issue is addressed only in the data model by having a location attribute; it is not addressed in the text. I can imagine the following possible uses: it is intended to be used for location-based data access privileges (reconflating organizational role and user privilege); it is intended to be used for location-based limitations on pick lists; it is intended to make organizational reporting more useful. If it is the third use that is motivating the change, and administrative reporting is on the table, then I would urge people to take a look at the data model for the HR module (hr3.mwb (mysql workbench) on the HR module project page). There, the issue is dealt with more generally (based on multi-country requirements analysis) with the concepts of post and assignment: the post is the official job title and the organizational unit of which the staff is a member, while an assignment is an organizational role; there can be multiple assignments per post, so the same staff can work as a PA at location 1 on Monday and a CHW at location 2 on Tuesday.
Hi Darius,
Thanks for setting me straight. I confused the “Restrict By Role Module” with the “Restrict By Encounter Type Module” by the HISP India group which would address the needs of TRUNK-1640. We do NOT need the “Restrict By Role Module”.
I recently added TRUNK-1640 as “Extra Credit” on the Filtering Forms on Dashboard Design Page because it’s related. The GSoC main project is to limit which forms appear in the list of forms that can be filled out. TRUNK-1640 is to limit which role is required for given encounter types to be viewed/edited. https://wiki.openmrs.org/display/docs/Jembi+Html+Form+Entry+Module
Roles Based Form Display
On the form designer, roles can be associated with forms. Roles associated with a form can either be associated as a "View" role or an "Edit" role (or the equivalent "Both" role). On the patient dashboard, if there are roles associated with a form, then the currently authenticated user must have the appropriate roles to view and/or edit a form.
Can we make TRUNK-1640 an official requirement for the GSoC project? Or is that something that can be addressed through the Roles and Privileges Sprint?
Thanks,
James
From: implem...@openmrs.org [mailto:implem...@openmrs.org] On Behalf Of Darius Jazayeri
Subject: Re: [OPENMRS-IMPLEMENTERS] Roles and Privileges Sprint
About filtering things by roles...
Filtering forms by roles and patient characteristics is a GSoC project this year (https://wiki.openmrs.org/x/OIW5AQ, student = Goutham Vasireddi) so we will not be working on that during the sprint. (But yes, we know it's highly voted and much awaited!)
The Restrict By Role module allows you to use Cohort Builder queries to limit the patients a given Role can see. As far as I know, this is the only published module that lets you limit the patients that particular users are allowed to see, although that's a frequently-requested feature. This was a very early module (from 2007), so the code is mediocre, it probably slows down your patient searches a lot, and the API has changed since then so it probably misses a lot of restrictions.
[The reason there aren't any other published modules doing this is that it's basically impossible to solve the problem generically in a performant way.)
So the question is: are there any implementers out there who would like to see us spend some developer cycles doing a modernized version of Restrict By Role? It would:
- let you restrict the patients that particular users/roles can see based on reporting module cohort queries (instead of cohort builder)
- cache query results so it slows things down less than the current module does
If there's interest, we can spend some cycles on this during the sprint. (And if not, not.)
-Darius
On Thu, May 10, 2012 at 3:22 PM, James Arbaugh <jarb...@hashaiti.org> wrote:
Greetings all!
One of our highest priorities should be the RestrictByRole module capability; the ability to specify which user roles can view/edit which encounters. This is important to many based on the number of people that have voted (6) for the “Add roles-based form display feature ticket”…
https://tickets.openmrs.org/browse/TRUNK-1640
…which includes the ability to “filter form viewing and editing based on roles”.
This is also something that comes up frequently on the mailing list and on OpenMRS Answers.
https://answers.openmrs.org/questions/585/a-way-to-set-role-privileges-to-specific-form-entry-forms
+1 on improving documentation
Thanks,
James
From: implem...@openmrs.org [mailto:implem...@openmrs.org] On Behalf Of Daniel Kayiwa
Sent: Thursday, May 10, 2012 5:22 PM
To: openmrs-i...@LISTSERV.IUPUI.EDU
Subject: [OPENMRS-IMPLEMENTERS] Roles and Privileges Sprint
Greetings to you all!!!
We are soon going to have a sprint on roles and privileges, during which we are thinking of dealing with the following topics:
1) Make it easy for an admin to see what privileges are needed to perform a sequence of actions.
2) Improve the page a user sees when they fail a privilege check.
3) Improve documentation on how to use privileges/roles and avoid pitfalls.
4) Implement Organizational Role as designed in this wiki page: https://wiki.openmrs.org/display/docs/Organizational+Roles
Do you feel the above topics address what the community needs, as far as roles and privileges are concerned?
Does anyone want a modernized version of the Restrict By Role module?
Do you have anything to say about the Organizational Role API design?
All questions, comments and suggestions are very welcome!!!
Daniel Kayiwa
On Behalf of the OpenMRS Community
Click here to unsubscribe from OpenMRS Implementers' mailing list
Looking at it briefly TRUNK-1640 looks very similar to what is on slate for the gsoc project. Both are linked to forms, not to encounter types.Ben
Hi All!
I have commented on TRUNK-3361 and had a short call with Darius to explain the use-case that we are trying to solve. It has more to do with requiring permissions for viewing/editing encounters than it does to what users can fill out a given form. So, after a form has already been filled out (which we’ll called an encounter at that point and is shown under the encounter/visit tab on the dashboard). Who has permissions to view it and/or edit it? So for example, we need to limit the viewing/editing of Blood Bank encounters to only users of the Blood Bank. And we need to limit the editing of Lab encounters to only Lab Technicians, but they can be viewable by doctors. And we need to limit the editing of surgery encounters by Surgery data entry clerks and surgeons, but all doctors can view them. If a user isn’t going to be able to view/edit the contents then it need not appear in the list of encounters.
The view and edit role and/or privileges could be implemented on the Edit Encounter Type page rather than on the Edit Form page. The consideration of doing it on the Edit Form page instead would be if someone needed to limit viewing/editing of forms in the case of different forms that use the same type of encounter.
Thanks for your patience and willingness to help make this needed functionality a reality.
Darius --
Wouldn't it make sense at the same time to make privilege a standard OpenMRS data object? At present, it does not have an integer id field or audit info.
Saludos, Roger
From: d...@openmrs.org [mailto:d...@openmrs.org] On Behalf Of Darius Jazayeri
Sent: Thursday, May 17, 2012 5:24 PM
To: openmrs...@LISTSERV.IUPUI.EDU
Click here to unsubscribe from OpenMRS Developers' mailing list
Burke did not want us to add privilege.ID because the privilege name _is_ the primary key in a business sense. And because they are referred to by name in code.
-Darius (by phone)
Yes, but now we would be adding 2 varchar fields to each encounter type. And how’d you like the way things turned out with globalproperty under the same logic?