public void afterReturning(Object returnValue, Method method, Object[] args, Object target)
      throws Throwable {
    log.debug("Intercepted an Encounter Save");
    if (method.getName().equals("saveEncounter")) {
      User autheticatedUser = Context.getAuthenticatedUser();

      if (autheticatedUser != null) {
        Collection<Role> userRoles = autheticatedUser.getAllRoles();

        if (userRoles != null && userRoles.size() > 0) {
          String prop =
              Context.getAdministrationService()
                  .getGlobalProperty(OncologyPOCConstants.GP_INTERCEPTROLES);

          if (prop != null) {
            String[] interceptRoles = prop.split(",");
            boolean interceptThisOne = false;
            Role interceptedRole = null;

            for (String role : interceptRoles) {
              for (Role userRole : userRoles) {
                if (role.equalsIgnoreCase(userRole.getRole())) {
                  interceptThisOne = true;
                  interceptedRole = userRole;
                  break;
                }
              }
              if (interceptThisOne) break;
            }

            if (interceptThisOne) {
              Encounter encounter = (Encounter) returnValue;
              if (encounter != null
                  && encounter.getPatient() != null
                  && encounter.getForm() != null) {
                OncologyPOCService service =
                    (OncologyPOCService) Context.getService(OncologyPOCService.class);
                SubEncounter subEncounter = service.getSubEncounter(encounter.getEncounterId());

                if (interceptedRole.hasPrivilege(OncologyPOCConstants.PRIV_CLINICIAN)) {
                  log.debug("Deleting subEncounter");
                  service.deleteSubEncounter(subEncounter);
                } else {
                  log.debug("Saving subEncounter");
                  if (subEncounter == null) {
                    subEncounter = new SubEncounter();
                    subEncounter.setEncounterId(encounter.getEncounterId());
                  }
                  service.saveSubEncounter(subEncounter);
                }
              }
            }
          }
        }
      }
    }
  }
  public synchronized JSONArray getArray(List<PharmacyLocationUsers> pharmacyLocations, int size) {

    drugNamess = new JSONArray();
    Collection<Role> xvc = userService.getAuthenticatedUser().getAllRoles();
    for (Role rl : xvc) {

      if ((rl.equals("System Developer")) || (rl.equals("Provider"))) {

        editPharmacy = true;
        deletePharmacy = true;
      }

      if (rl.hasPrivilege("Edit Pharmacy")) {
        editPharmacy = true;
      }

      if (rl.hasPrivilege("Delete Pharmacy")) {
        deletePharmacy = true;
      }
    }
    if (editPharmacy) {

      drugNamess.put("edit");
      editPharmacy = false;
    } else drugNamess.put("");
    drugNamess.put("");
    drugNamess.put(pharmacyLocations.get(size).getUuid());
    drugNamess.put(pharmacyLocations.get(size).getUserName());
    drugNamess.put(pharmacyLocations.get(size).getLocation());

    if (deletePharmacy) {
      drugNamess.put("void");
      deletePharmacy = false;
    } else drugNamess.put("");
    return drugNamess;
  }