public Visit mergeVisits(Visit preferred, Visit nonPreferred) { // extend date range of winning if (OpenmrsUtil.compareWithNullAsEarliest( nonPreferred.getStartDatetime(), preferred.getStartDatetime()) < 0) { preferred.setStartDatetime(nonPreferred.getStartDatetime()); } if (preferred.getStopDatetime() != null && OpenmrsUtil.compareWithNullAsLatest( preferred.getStopDatetime(), nonPreferred.getStopDatetime()) < 0) { preferred.setStopDatetime(nonPreferred.getStopDatetime()); } // move encounters from losing into winning if (nonPreferred.getEncounters() != null) { for (Encounter e : nonPreferred.getEncounters()) { e.setPatient(preferred.getPatient()); preferred.addEncounter(e); encounterService.saveEncounter(e); } } nonPreferred.setEncounters( null); // we need to manually the encounters from the non-preferred visit before voiding or // all the encounters we just moved will also get voided! visitService.voidVisit( nonPreferred, "EMR - Merge Patients: merged into visit " + preferred.getVisitId()); visitService.saveVisit(preferred); return preferred; }
@Test public void shouldCreateVisitWhenNoVisitsAreActive() throws Exception { executeDataSet("shouldCreateVisitWhenNoVisitsAreActive.xml"); String json = "{ \"patientUuid\" : \"a76e8d23-0c38-408c-b2a8-ea5540f01b51\", \"visitTypeUuid\" : \"b45ca846-c79a-11e2-b0c0-8e397087571c\"," + "\"encounterTypeUuid\": \"2b377dba-62c3-4e53-91ef-b51c68899890\" }"; EncounterTransaction response = deserialize( handle(newPostRequest("/rest/emrapi/encounter", json)), EncounterTransaction.class); Visit visit = visitService.getVisitByUuid(response.getVisitUuid()); assertEquals("a76e8d23-0c38-408c-b2a8-ea5540f01b51", visit.getPatient().getUuid()); assertEquals("b45ca846-c79a-11e2-b0c0-8e397087571c", visit.getVisitType().getUuid()); }
private boolean itBelongsToARealPatient(Visit candidate) { Patient patient = candidate.getPatient(); PatientDomainWrapper domainWrapper = new PatientDomainWrapper(patient, emrApiProperties, null, null, null, null); return !domainWrapper.isTestPatient(); }