2009 Implementers Group Meeting Program Fixing Roles

Problems stemming from dual-purposing roles for job titles, and application privileges Example: nurse, doctor, data manager roles to represent jobs, but not all doctors have the same privileges Should we also solve location-based privileges during this discussion? First let's solve dual-purposing of roles in the first 10 minutes. Then let's move on to location privileges and data privileges (e.g. don't show HIV results) ---dual purposed role--- We should have: Organizational Role, aka Job Title these would be assigned to Person (not User) No heirarchy needed You would drive UI for "choose provider" via this. Application Role, aka Privilege Group (Ben says: this could just be a privilege if privileges can contain other privileges) Jim: MS Authorization Manager uses this terminology Operation (like a Privilege) Task = group of Operations, (or inherit from other Tasks) Role = group of Tasks and/or Operations User: can have roles assigned User groups: can have roles assigned ---Options for ORG_ROLE naming--- Organizational Role Job Title Job Role Position ... Privileges: View Person Add Concept Manage Locations should we have Manage be Add + Edit + Remove How do we distinguish in the UI between system privileges, and user-created privilege groups Burke: I don't want to have to maintain a separate list of "here's the subset of privileges that are really privileges and not groups" It would be awesome if the mere fact that a method has and @Authorized annotation on it creates that privilege Burke: the system itself should support inheritable privileges Manage Locations contains Add Locations, Edit Locations, Remove Locations Privilege groups should also be inheritable Privileges and privileges groups can be combined, but we need to add locked or type or something so we know what's a system-provided privilege, and what's a user-created group We need the idea of purging a module (in the future) that will clean out its privileges. Assume we have Manage Locations = Add, Edit, Remove Locations argument about whether code is allowed to check against Manage Location (i.e. a group) or not do we just allow hasAny vs hasAll Burke wants a clean way of having a "lockedBy" hack, which would be a string describing which modules (and core) are preventing deletion of a privilege