[Oscarmcmaster-cvscommit] oscar_mcmaster/web/WEB-INF/classes/src/org/oscarehr/casemgmt/model CaseM
open source web-based Electronic Medical Record (EMR) system
Brought to you by:
davidhcchan,
jaygallagher
From: Ted L. <ted...@us...> - 2009-07-15 15:27:40
|
Update of /cvsroot/oscarmcmaster/oscar_mcmaster/web/WEB-INF/classes/src/org/oscarehr/casemgmt/model In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv1448/web/WEB-INF/classes/src/org/oscarehr/casemgmt/model Modified Files: CaseManagementIssue.java Log Message: fix writeaccess for issues Index: CaseManagementIssue.java =================================================================== RCS file: /cvsroot/oscarmcmaster/oscar_mcmaster/web/WEB-INF/classes/src/org/oscarehr/casemgmt/model/CaseManagementIssue.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** CaseManagementIssue.java 2 Jul 2009 17:59:11 -0000 1.10 --- CaseManagementIssue.java 15 Jul 2009 15:27:32 -0000 1.11 *************** *** 24,33 **** --- 24,46 ---- import java.util.Date; + import java.util.HashMap; import java.util.HashSet; + import java.util.Iterator; + import java.util.List; + import java.util.Map; import java.util.Set; import org.caisi.model.BaseObject; + import org.caisi.model.Role; + import org.oscarehr.PMmodule.model.ProgramAccess; + import org.oscarehr.PMmodule.model.ProgramProvider; + import org.oscarehr.casemgmt.dao.RoleProgramAccessDAO; + import org.oscarehr.util.LoggedInInfo; + import org.oscarehr.util.SpringUtils; public class CaseManagementIssue extends BaseObject { + + private RoleProgramAccessDAO roleProgramAccessDao=(RoleProgramAccessDAO)SpringUtils.getBean("RoleProgramAccessDAO"); + protected Long id; protected String demographic_no; *************** *** 45,48 **** --- 58,62 ---- protected Integer program_id = null; + /** @deprecated not a data field */ protected boolean writeAccess; *************** *** 200,207 **** --- 214,223 ---- } + /** @deprecated not a data field */ public boolean isWriteAccess() { return writeAccess; } + /** @deprecated not a data field */ public void setWriteAccess(boolean writeAccess) { this.writeAccess = writeAccess; *************** *** 216,218 **** --- 232,289 ---- } + public boolean isWriteAccess(int programId) + { + List<ProgramProvider> ppList = roleProgramAccessDao.getProgramProviderByProviderProgramID(LoggedInInfo.loggedInInfo.get().loggedInProvider.getProviderNo(), new Long(programId)); + if (ppList == null || ppList.isEmpty()) { + return(false); + } + + ProgramProvider pp = ppList.get(0); + Role role = pp.getRole(); + + List<ProgramAccess> programAccessList = roleProgramAccessDao.getAccessListByProgramID(new Long(programId)); + Map programAccessMap = convertProgramAccessListToMap(programAccessList); + + String issueRole = getIssue().getRole().toLowerCase(); + ProgramAccess pa = null; + boolean add = false; + + // write + pa = (ProgramAccess) programAccessMap.get("write " + issueRole + " issues"); + if (pa != null) { + if (pa.isAllRoles() || isRoleIncludedInAccess(pa, role)) { + return(true); + } + } else { + if (issueRole.equalsIgnoreCase(role.getName())) { + return(true); + } + } + + return(false); + } + + private static boolean isRoleIncludedInAccess(ProgramAccess pa, Role role) { + boolean result = false; + + for (Iterator iter = pa.getRoles().iterator(); iter.hasNext();) { + Role accessRole = (Role) iter.next(); + if (role.getId() == accessRole.getId()) { + return true; + } + } + return result; + } + + private static Map<String, ProgramAccess> convertProgramAccessListToMap(List<ProgramAccess> programAccessList) { + Map<String, ProgramAccess> map = new HashMap<String, ProgramAccess>(); + + for (Iterator<ProgramAccess> iter = programAccessList.iterator(); iter.hasNext();) { + ProgramAccess pa = iter.next(); + map.put(pa.getAccessType().getName().toLowerCase(), pa); + } + return map; + } + + } |