/** * @see org.openmrs.api.EncounterService#canEditEncounter(org.openmrs.Encounter, * org.openmrs.User) */ @Override public boolean canEditEncounter(Encounter encounter, User user) { // if passed in encounter is null raise an exception if (encounter == null) { throw new IllegalArgumentException("The encounter argument can not be null"); } // since we restrict by encounter type, if it does not exist, then anyone is allowed to edit the encounter if (encounter.getEncounterType() == null) { return Boolean.TRUE; } // if user is not specified, then use authenticated user from context by default if (user == null) { user = Context.getAuthenticatedUser(); } return userHasEncounterPrivilege(encounter.getEncounterType().getEditPrivilege(), user); }
/** * @see org.openmrs.api.EncounterService#canViewEncounter(org.openmrs.Encounter, * org.openmrs.User) */ @Override public boolean canViewEncounter(Encounter encounter, User user) { // if passed in encounter is null raise an exception if (encounter == null) { throw new IllegalArgumentException("The encounter argument can not be null"); } // since we restrict by encounter type, if it does not exist, then anyone is allowed to view the encounter if (encounter.getEncounterType() == null) { return Boolean.TRUE; } // if user is not specified, then use authenticated user from context by default if (user == null) { user = Context.getAuthenticatedUser(); } return userHasEncounterPrivilege(encounter.getEncounterType().getViewPrivilege(), user); }
/** * @see org.openmrs.api.EncounterService#filterEncountersByViewPermissions(java.util.List, * org.openmrs.User) */ @Override @Transactional(readOnly = true) public List<Encounter> filterEncountersByViewPermissions(List<Encounter> encounters, User user) { if (encounters != null) { // if user is not specified then use authenticated user from context by default if (user == null) { user = Context.getAuthenticatedUser(); } for (Iterator<Encounter> iterator = encounters.iterator(); iterator.hasNext();) { Encounter encounter = iterator.next(); // determine whether it's need to include this encounter into result or not // as it can be not accessed by current user due to permissions lack EncounterType et = encounter.getEncounterType(); if (et != null && !userHasEncounterPrivilege(et.getViewPrivilege(), user)) { // exclude this encounter from result iterator.remove(); } } } return encounters; }
/** * This method safely checks if authenticated user is not supposed to edit encounter of certain type * * @param encounter encounter which is to be edited * @throws APIException if not allowed to edit encounter */ private void failIfDeniedToEdit(Encounter encounter) throws APIException { if (!canEditEncounter(encounter, null)) { throw new APIException("Encounter.error.privilege.required.edit", new Object[] { encounter.getEncounterType() .getEditPrivilege() }); } }
/** * @see org.openmrs.api.EncounterService#getEncounter(java.lang.Integer) */ @Override @Transactional(readOnly = true) public Encounter getEncounter(Integer encounterId) throws APIException { Encounter encounter = dao.getEncounter(encounterId); if (encounter == null) { return null; } else if (canViewEncounter(encounter, null)) { return encounter; } else { throw new APIException("Encounter.error.privilege.required.view", new Object[] { encounter.getEncounterType() .getViewPrivilege() }); } }
/** * @see org.openmrs.api.EncounterService#purgeEncounter(org.openmrs.Encounter) */ @Override public void purgeEncounter(Encounter encounter) throws APIException { // if authenticated user is not supposed to edit encounter of certain type if (!canEditEncounter(encounter, null)) { throw new APIException("Encounter.error.privilege.required.purge", new Object[] { encounter.getEncounterType() .getEditPrivilege() }); } dao.deleteEncounter(encounter); }
/** * @see java.lang.Object#toString() * @should not fail with empty object */ @Override public String toString() { String ret = ""; ret += encounterId == null ? "(no ID) " : encounterId.toString() + " "; ret += this.getEncounterDatetime() == null ? "(no Date) " : this.getEncounterDatetime().toString() + " "; ret += this.getEncounterType() == null ? "(no Type) " : this.getEncounterType().getName() + " "; ret += this.getLocation() == null ? "(no Location) " : this.getLocation().getName() + " "; ret += this.getPatient() == null ? "(no Patient) " : this.getPatient().getPatientId().toString() + " "; ret += this.getForm() == null ? "(no Form) " : this.getForm().getName() + " "; ret += "num Obs: " + this.getObsAtTopLevel(false) + " "; ret += "num Orders: " + this.getOrders().size() + " "; return "Encounter: [" + ret + "]"; }
VisitType visitType = encounterVisitMapping.get(encounter.getEncounterType()); if (visitType == null) { visitType = loadVisitType(encounter.getEncounterType()); newMap.put(encounter.getEncounterType(), visitType);
/** * @see org.openmrs.api.EncounterService#purgeEncounter(Encounter, boolean) */ @Override public void purgeEncounter(Encounter encounter, boolean cascade) throws APIException { // if authenticated user is not supposed to edit encounter of certain type if (!canEditEncounter(encounter, null)) { throw new APIException("Encounter.error.privilege.required.purge", new Object[] { encounter.getEncounterType() .getEditPrivilege() }); } if (cascade) { ObsService obsService = Context.getObsService(); List<Encounter> justThisEncounter = new ArrayList<>(); justThisEncounter.add(encounter); List<Obs> observations = new ArrayList<>( obsService.getObservations(null, justThisEncounter, null, null, null, null, null, null, null, null, null, true)); for (Obs o : observations) { obsService.purgeObs(o); } Set<Order> orders = encounter.getOrders(); for (Order o : orders) { Context.getOrderService().purgeOrder(o); } } Context.getEncounterService().purgeEncounter(encounter); }
throw new APIException("Encounter.error.privilege.required.unvoid", new Object[] { encounter.getEncounterType() .getEditPrivilege() });
throw new APIException("Encounter.error.privilege.required.void", new Object[] { encounter.getEncounterType() .getEditPrivilege() });
Encounter encounter = Context.getEncounterService().getEncounter(1); Assert.assertNull(encounter.getVisit()); Assert.assertEquals(encounterTypeUuid, encounter.getEncounterType().getUuid()); Assert.assertEquals(1, encounter.getEncounterType().getEncounterTypeId().intValue()); Assert .assertEquals(Context.getVisitService().getVisitTypeByUuid(visitTypeUuid), encounter.getVisit()
/** * @see ExistingVisitAssignmentHandler#beforeCreateEncounter(Encounter) */ @Test public void beforeCreateEncounter_shouldAssignMappingGlobalPropertyVisitType() { Encounter encounter = Context.getEncounterService().getEncounter(1); Assert.assertNull(encounter.getVisit()); Calendar calendar = Calendar.getInstance(); calendar.setTime(encounter.getEncounterDatetime()); calendar.set(Calendar.YEAR, 1900); encounter.setEncounterDatetime(calendar.getTime()); GlobalProperty gp = new GlobalProperty(OpenmrsConstants.GP_ENCOUNTER_TYPE_TO_VISIT_TYPE_MAPPING, "3:4, 5:2, 1:2, 2:2"); Context.getAdministrationService().saveGlobalProperty(gp); new ExistingOrNewVisitAssignmentHandler().beforeCreateEncounter(encounter); Assert.assertNotNull(encounter.getVisit()); //should be set according to: 1:2 encounterTypeId:visitTypeId Assert.assertEquals(1, encounter.getEncounterType().getEncounterTypeId().intValue()); Assert.assertEquals(Context.getVisitService().getVisitType(2), encounter.getVisit().getVisitType()); }
/** * Gets encounter and adds edit privilege to it * * @return encounter with type having non null edit privilege */ private Encounter getEncounterWithEditPrivilege() { // create service to be used for encounter manipulations EncounterService encounterService = Context.getEncounterService(); Encounter encounter = encounterService.getEncounter(1); EncounterType encounterType = encounter.getEncounterType(); // make sure that encounter type is not null assertNotNull(encounterType); // set view privilege on this encounter type Privilege editPrivilege = Context.getUserService().getPrivilege("Some Privilege For Edit Encounter Types"); encounterType.setEditPrivilege(editPrivilege); encounter.setEncounterType(encounterType); // update encounter encounter = encounterService.saveEncounter(encounter); // make sure that encounter type updated successfully assertNotNull(encounter); return encounter; }
/** * Gets encounter and adds view privilege to it * * @return encounter with type having non null view privilege */ private Encounter getEncounterWithViewPrivilege() { // create service to be used for encounter manipulations EncounterService encounterService = Context.getEncounterService(); Encounter encounter = encounterService.getEncounter(1); EncounterType encounterType = encounter.getEncounterType(); // make sure that encounter type is not null assertNotNull(encounterType); // set view privilege on this encounter type Privilege viewPrivilege = Context.getUserService().getPrivilege("Some Privilege For View Encounter Types"); encounterType.setViewPrivilege(viewPrivilege); encounter.setEncounterType(encounterType); // update encounter encounter = encounterService.saveEncounter(encounter); // make sure that encounter was updated successfully assertNotNull(encounter); return encounter; }
/** * @see EncounterService#canEditEncounter(Encounter, User) */ @Test public void canEditEncounter_shouldReturnTrueIfUserCanEditEncounter() { // get encounter that has type with edit privilege set Encounter encounter = getEncounterWithEditPrivilege(); User user = Context.getUserService().getUserByUsername("test_user"); assertNotNull(user); // add required privilege to role in which this user is Role role = Context.getUserService().getRole("Provider"); role.addPrivilege(encounter.getEncounterType().getEditPrivilege()); user.addRole(role); assertTrue(Context.getEncounterService().canEditEncounter(encounter, user)); }
/** * @see EncounterService#canViewEncounter(Encounter, User) */ @Test public void canViewEncounter_shouldReturnTrueIfUserCanViewEncounter() { // get encounter that has type with view privilege set Encounter encounter = getEncounterWithViewPrivilege(); User user = Context.getUserService().getUserByUsername("test_user"); assertNotNull(user); // add required privilege to role in which this user is Role role = Context.getUserService().getRole("Provider"); role.addPrivilege(encounter.getEncounterType().getViewPrivilege()); user.addRole(role); assertTrue(Context.getEncounterService().canViewEncounter(encounter, user)); }
Location origLocation = encounter.getLocation(); Date origDate = encounter.getEncounterDatetime(); EncounterType origEncType = encounter.getEncounterType(); assertTrue("The location should be different", newestEnc.getLocation().equals(loc2)); assertFalse("The enc should have changed", origEncType.equals(encType2)); assertTrue("The enc type needs to have been set", newestEnc.getEncounterType().equals(encType2)); assertFalse("Make sure the dates changed slightly", origDate.equals(d2)); assertTrue("The date needs to have been set",
target.setEncounterType(getEncounterType()); target.setForm(getForm()); target.setLocation(getLocation());
/** * @see EncounterService#getEncounter(Integer) */ @Test public void getEncounter_shouldReturnEncounterIfUserIsAllowedToViewIt() { // get encounter that has type with view privilege set Encounter encounter = getEncounterWithViewPrivilege(); User user = Context.getUserService().getUserByUsername("test_user"); assertNotNull(user); // add required privilege to role in which this user is Role role = Context.getUserService().getRole("Provider"); role.addPrivilege(encounter.getEncounterType().getViewPrivilege()); user.addRole(role); // and authenticate under it's account Context.becomeUser(user.getSystemId()); // have to add privilege in order to be able to call getEncounter(Integer) method Context.addProxyPrivilege(PrivilegeConstants.GET_ENCOUNTERS); assertNotNull(Context.getEncounterService().getEncounter(encounter.getId())); }