/** * @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); }
/** * Make sure that purging an encounter removes the row from the database * * @see EncounterService#purgeEncounter(Encounter) */ @Test public void purgeEncounter_shouldPurgeEncounter() { EncounterService es = Context.getEncounterService(); // fetch the encounter to delete from the db Encounter encounterToDelete = es.getEncounter(1); es.purgeEncounter(encounterToDelete); // try to refetch the encounter. should get a null object Encounter e = es.getEncounter(encounterToDelete.getEncounterId()); assertNull("We shouldn't find the encounter after deletion", e); }
/** * @see org.openmrs.module.webservices.rest.web.resource.impl.DelegatingCrudResource#purge(org.openmrs.Encounter, * org.openmrs.module.webservices.rest.web.RequestContext) */ @Override public void purge(Encounter enc, RequestContext context) throws ResponseException { if (enc == null) { // DELETE is idempotent, so we return success here return; } Context.getEncounterService().purgeEncounter(enc); }
/** * @see EncounterService#purgeEncounter(Encounter) */ @Test(expected = APIException.class) public void purgeEncounter_shouldFailfIfUserIsNotSupposedToEditEncountersOfTypeOfGivenEncounter() { // get encounter that has type with edit privilege set Encounter encounter = getEncounterWithEditPrivilege(); User user = Context.getUserService().getUserByUsername("test_user"); assertNotNull(user); // left this user as is - i.e. without required privilege // and authenticate under it's account Context.becomeUser(user.getSystemId()); // have to add privilege in order to be able to call purgeEncounter(Encounter) method Context.addProxyPrivilege(PrivilegeConstants.PURGE_ENCOUNTERS); Context.getEncounterService().purgeEncounter(encounter); }
/** * @see EncounterService#purgeEncounter(Encounter,Boolean) */ @Test(expected = APIException.class) public void purgeEncounterCascade_shouldFailfIfUserIsNotSupposedToEditEncountersOfTypeOfGivenEncounter() { // get encounter that has type with edit privilege set Encounter encounter = getEncounterWithEditPrivilege(); User user = Context.getUserService().getUserByUsername("test_user"); assertNotNull(user); // left this user as is - i.e. without required privilege // and authenticate under it's account Context.becomeUser(user.getSystemId()); // have to add privilege in order to be able to call purgeEncounter(Encounter,Boolean) method Context.addProxyPrivilege(PrivilegeConstants.PURGE_ENCOUNTERS); Context.getEncounterService().purgeEncounter(encounter, Boolean.TRUE); }
/** * Make sure that purging an encounter removes the row from the database * * @see EncounterService#purgeEncounter(Encounter,null) */ @Test public void purgeEncounter_shouldCascadePurgeToObsAndOrders() { EncounterService es = Context.getEncounterService(); // fetch the encounter to delete from the db Encounter encounterToDelete = es.getEncounter(1); es.purgeEncounter(encounterToDelete, true); // try to refetch the encounter. should get a null object Encounter e = es.getEncounter(encounterToDelete.getEncounterId()); assertNull("We shouldn't find the encounter after deletion", e); ObsService obsService = Context.getObsService(); assertNull(obsService.getObs(1)); assertNull(obsService.getObs(2)); assertNull(obsService.getObs(3)); assertNull(Context.getOrderService().getOrder(1)); }
/** * Saves the given MRS Encounter to the OpenMRS system * @param mrsEncounter The object to be saved * @return The saved instance of MRS Encounter */ @Override @Transactional public MRSEncounter createEncounter(MRSEncounter mrsEncounter) { Encounter existingOpenMrsEncounter = findDuplicateOpenMrsEncounter(mrsEncounter); if (existingOpenMrsEncounter == null) { MRSEncounter encounter = openmrsToMrsEncounter(encounterService.saveEncounter(mrsToOpenMRSEncounter(mrsEncounter))); eventRelay.sendEventMessage(new MotechEvent(EventKeys.CREATED_NEW_ENCOUNTER_SUBJECT, EventHelper.encounterParameters(encounter))); return encounter; } else { encounterService.purgeEncounter(existingOpenMrsEncounter); MRSEncounter encounter = openmrsToMrsEncounter(encounterService.saveEncounter(mrsToOpenMRSEncounter(mrsEncounter))); eventRelay.sendEventMessage(new MotechEvent(EventKeys.UPDATED_ENCOUNTER_SUBJECT, EventHelper.encounterParameters(encounter))); return encounter; } }