Encounter target = new Encounter(); target.setChangedBy(getChangedBy()); target.setCreator(getCreator()); target.setDateChanged(getDateChanged()); target.setDateCreated(getDateCreated()); target.setDateVoided(getDateVoided()); target.setVoided(getVoided()); target.setVoidedBy(getVoidedBy()); target.setVoidReason(getVoidReason()); target.setEncounterDatetime(getEncounterDatetime()); target.setEncounterType(getEncounterType()); target.setForm(getForm()); target.setLocation(getLocation()); target.setPatient(patient); for (EncounterProvider encounterProvider : getEncounterProviders()) { EncounterProvider encounterProviderCopy = encounterProvider.copy(); encounterProviderCopy.setEncounter(target); target.getEncounterProviders().add(encounterProviderCopy); for (Obs obs : getAllObs()) { Obs obsCopy = Obs.newInstance(obs); obsCopy.setEncounter(target); obsCopy.setPerson(patient); target.addObs(obsCopy);
/** * @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 + "]"; }
private void mergeEncounters(Patient preferred, Patient notPreferred, PersonMergeLogData mergedData) { // change all encounters. This will cascade to obs and orders contained in those encounters // TODO: this should be a copy, not a move EncounterService es = Context.getEncounterService(); EncounterSearchCriteria notPreferredPatientEncounterSearchCriteria = new EncounterSearchCriteriaBuilder() .setIncludeVoided(true) .setPatient(notPreferred) .createEncounterSearchCriteria(); for (Encounter e : es.getEncounters(notPreferredPatientEncounterSearchCriteria)) { e.setPatient(preferred); log.debug("Merging encounter " + e.getEncounterId() + " to " + preferred.getPatientId()); Encounter persisted = es.saveEncounter(e); mergedData.addMovedEncounter(persisted.getUuid()); } }
/** * This method assigns a visit to a new encounter using the registered visit assignment handler * * @param encounter a new encounter */ private void createVisitForNewEncounter(Encounter encounter) { if (encounter.getEncounterId() == null) { //Am using Context.getEncounterService().getActiveEncounterVisitHandler() instead of just //getActiveEncounterVisitHandler() for modules which may want to AOP around this call. EncounterVisitHandler encounterVisitHandler = Context.getEncounterService().getActiveEncounterVisitHandler(); if (encounterVisitHandler != null) { encounterVisitHandler.beforeCreateEncounter(encounter); //If we have been assigned a new visit, persist it. if (encounter.getVisit() != null && encounter.getVisit().getVisitId() == null) { Context.getVisitService().saveVisit(encounter.getVisit()); } } } }
Encounter encounter = new Encounter(); encounter.setPatient(Context.getPatientService().getPatient(3)); encounter.setEncounterType(Context.getEncounterService().getEncounterType(1)); encounter.setEncounterDatetime(new Date()); Integer encounterId = Context.getEncounterService().getEncounterByUuid(encounter.getUuid()).getId(); OrderGroup orderGroup = new OrderGroup(); orderGroup.setOrderSet(orderSet); orderGroup.setPatient(encounter.getPatient()); orderGroup.setEncounter(Context.getEncounterService().getEncounter(encounterId)); encounter.addOrder(firstOrderWithOrderGroup); encounter.addOrder(secondOrderWithOrderGroup); Context.getEncounterService().getEncounterByUuid(encounter.getUuid()).getOrders());
private Encounter buildEncounter() { // First, create a new Encounter Encounter enc = new Encounter(); enc.setLocation(Context.getLocationService().getLocation(1)); enc.setEncounterType(Context.getEncounterService().getEncounterType(1)); enc.setEncounterDatetime(new Date()); enc.setPatient(Context.getPatientService().getPatient(3)); enc.addProvider(Context.getEncounterService().getEncounterRole(1), Context.getProviderService().getProvider(1)); return enc; }
/** * @see VisitValidator#validate(Object,Errors) */ @Test public void validate_shouldFailIfTheStartDatetimeIsAfterAnyEncounter() { Visit visit = Context.getVisitService().getVisit(1); Encounter encounter = Context.getEncounterService().getEncounter(3); visit.setPatient(encounter.getPatient()); encounter.setVisit(visit); encounter.setEncounterDatetime(visit.getStartDatetime()); Context.getEncounterService().saveEncounter(encounter); //Set visit start date to after the encounter date. Date date = new Date(encounter.getEncounterDatetime().getTime() + 1); visit.setStartDatetime(date); Errors errors = new BindException(visit, "visit"); new VisitValidator().validate(visit, errors); assertEquals(true, errors.hasFieldErrors("startDatetime")); }
/** * @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()); }
/** * @see ExistingVisitAssignmentHandler#beforeCreateEncounter(Encounter) */ @Test public void beforeCreateEncounter_shouldAssignNewVisitIfNoMatchFound() { 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()); new ExistingOrNewVisitAssignmentHandler().beforeCreateEncounter(encounter); Assert.assertNotNull(encounter.getVisit()); }
/** * @see EncounterValidator#validate(Object,Errors) */ @Test public void validate_shouldPassValidationIfFieldLengthsAreCorrect() { encounter.setEncounterType(new EncounterType()); encounter.setPatient(new Patient()); encounter.setEncounterDatetime(new Date()); encounter.setVoidReason("voidReason"); encounterValidator.validate(encounter, errors); Assert.assertFalse(errors.hasErrors()); }
/** * @see Encounter#removeObs(Obs) */ @Test public void removeObs_shouldNotThrowErrorWhenRemovingNullObsFromNonEmptySet() { Encounter encounterWithObsSet = new Encounter(); Set<Obs> obsSet = new HashSet<>(); obsSet.add(new Obs()); encounterWithObsSet.setObs(obsSet); // make sure the encounter got the obs Assert.assertEquals(1, encounterWithObsSet.getAllObs(true).size()); encounterWithObsSet.removeObs(null); }
/** * @see Encounter#addObs(Obs) */ @Test public void addObs_shouldAddObsToNonNullInitialObsSet() { Encounter encounter = new Encounter(); Set<Obs> obsSet = new HashSet<>(); obsSet.add(new Obs(1)); encounter.setObs(obsSet); encounter.addObs(new Obs(2)); assertEquals(2, encounter.getAllObs(true).size()); }
@Test public void saveEncounter_shouldSaveEncounterWithComplexObs() { executeDataSet(ENC_OBS_HIERARCHY_DATA_XML); EncounterService es = Context.getEncounterService(); Encounter encounter = es.getEncounter(101); Obs observation = buildObs(); observation.setLocation(encounter.getLocation()); observation.setPerson(encounter.getPatient()); encounter.addObs(observation); es.saveEncounter(encounter); Context.flushSession(); Context.clearSession(); encounter = es.getEncounter(101); assertEquals(2, encounter.getObsAtTopLevel(true).size()); }
/** * @see Encounter#getObsAtTopLevel(null) */ @Test public void getObsAtTopLevel_shouldGetObs() { Encounter encounter = new Encounter(); //create and add an Obs Obs o = new Obs(); encounter.addObs(o); assertNotNull(encounter.getObsAtTopLevel(true)); assertEquals(1, encounter.getObsAtTopLevel(true).size()); assertNotNull(encounter.getObsAtTopLevel(false)); assertEquals(1, encounter.getObsAtTopLevel(false).size()); }
/** * @see EncounterValidator#validate(Object,Errors) */ @Test public void validate_shouldFailIfEncounterDateTimeIsBeforeVisitStartDateTime() { Encounter encounter = Context.getEncounterService().getEncounter(3); Visit visit = Context.getVisitService().getVisit(1); visit.setPatient(encounter.getPatient()); encounter.setVisit(visit); //Set encounter dateTime to before the visit startDateTime. Date date = new Date(visit.getStartDatetime().getTime() - 1); encounter.setEncounterDatetime(date); errors = new BindException(encounter, "encounter"); encounterValidator.validate(encounter, errors); Assert.assertEquals(true, errors.hasFieldErrors("encounterDatetime")); }
/** * You should be able to add an obs without an obsDatetime to an encounter, save the encounter, * and have the obs automatically persisted with the same date as the encounter. Added to test * bug reported in {@link Ticket#827} * * @see EncounterService#saveEncounter(Encounter) */ @Test public void saveEncounter_shouldCascadeEncounterDatetimeToObs() { EncounterService es = Context.getEncounterService(); // get an encounter from the database Encounter encounter = es.getEncounter(1); assertNotNull(encounter.getEncounterDatetime()); // Now add an obs to it and do NOT set the obs datetime Obs obs = new Obs(); obs.setConcept(Context.getConceptService().getConcept(1)); obs.setValueNumeric(50d); encounter.addObs(obs); es.saveEncounter(encounter); assertTrue(encounter.getEncounterDatetime().equals(obs.getObsDatetime())); }
encounterUuidsThatShouldBeMoved.add(Context.getEncounterService().getEncounter(6).getUuid()); for (Visit v : Arrays.asList(visit1, visit2, visit3)) { for (Encounter e : v.getEncounters()) { encounterUuidsThatShouldBeMoved.add(e.getUuid()); assertThat(e.getPatient(), is(v.getPatient())); for (Obs o : e.getAllObs(true)) { if (!originalUnvoidedObs.contains(o)) { assertThat(o.getPerson().getId(), is(v.getPatient().getId()));
/** * @see Encounter#addOrder(Order) */ @Test public void addOrder_shouldAddOrderToNonNullInitialOrderSet() { Encounter encounter = new Encounter(); Set<Order> orderSet = new HashSet<>(); orderSet.add(new Order(1)); encounter.setOrders(orderSet); encounter.addOrder(new Order(2)); assertEquals(2, encounter.getOrders().size()); }