private void mergeDateOfDeath(Patient preferred, Patient notPreferred, PersonMergeLogData mergedData) { mergedData.setPriorDateOfDeath(preferred.getDeathDate()); if (preferred.getDeathDate() == null) { preferred.setDeathDate(notPreferred.getDeathDate()); } if (preferred.getCauseOfDeath() != null) { mergedData.setPriorCauseOfDeath(preferred.getCauseOfDeath().getUuid()); } if (preferred.getCauseOfDeath() == null) { preferred.setCauseOfDeath(notPreferred.getCauseOfDeath()); } }
Date dateDeath = patient.getDeathDate(); if (dateDeath == null) { dateDeath = new Date();
@Test public void processDeath_shouldMapValuesAndSavePatient() throws Exception { // given final Date dateDied = new Date(); final Concept causeOfDeath = new Concept(2); when(conceptService.getConcept(anyString())).thenReturn(new Concept()); when(locationService.getDefaultLocation()).thenReturn(new Location()); UserContext userContext = mock(UserContext.class); this.contextMockHelper.setUserContext(userContext); when(userContext.hasPrivilege(anyString())).thenReturn(true); ArgumentCaptor<Patient> argumentCaptor = ArgumentCaptor.forClass(Patient.class); when(patientDaoMock.savePatient(argumentCaptor.capture())).thenReturn(new Patient()); // when final Patient patient = new Patient(); patient.addIdentifier(new PatientIdentifier("an identifier", new PatientIdentifierType(1234), new Location())); patientService.processDeath(patient, dateDied, causeOfDeath, "unknown"); // then final Patient savedPatient = argumentCaptor.getValue(); assertEquals(true, savedPatient.getDead()); assertEquals(dateDied, savedPatient.getDeathDate()); assertEquals(causeOfDeath, savedPatient.getCauseOfDeath()); }
mergedData.setPriorDateOfDeath(preferred.getDeathDate()); if (preferred.getDeathDate() == null) { preferred.setDeathDate(notPreferred.getDeathDate());
@Test public void testOverridingDateFromEncounter() throws Exception { Date newDeathDate = new Date(); Date oldDeathDate = new Date(newDeathDate.getTime() - 1000000); patient.setDeathDate(oldDeathDate); encounter.setEncounterDatetime(newDeathDate); MarkPatientDeadTagHandler.Action action = tagHandler.newAction(); action.setDeathDateFromEncounter(true); action.applyAction(formEntrySession); assertThat(patient.isDead(), is(true)); assertThat(patient.getDeathDate(), is(newDeathDate)); verify(patientService).savePatient(patient); }
@Test public void testSettingDateFromEncounter() throws Exception { Date deathDate = new Date(); encounter.setEncounterDatetime(deathDate); MarkPatientDeadTagHandler.Action action = tagHandler.newAction(); action.setDeathDateFromEncounter(true); action.applyAction(formEntrySession); assertThat(patient.isDead(), is(true)); assertThat(patient.getDeathDate(), is(deathDate)); verify(patientService).savePatient(patient); }
@Test public void testNotOverridingDateFromEncounter() throws Exception { Date newDeathDate = new Date(); Date oldDeathDate = new Date(newDeathDate.getTime() - 1000000); patient.setDeathDate(oldDeathDate); encounter.setEncounterDatetime(newDeathDate); MarkPatientDeadTagHandler.Action action = tagHandler.newAction(); action.setDeathDateFromEncounter(true); action.setPreserveExistingDeathDate(true); action.applyAction(formEntrySession); assertThat(patient.isDead(), is(true)); assertThat(patient.getDeathDate(), is(oldDeathDate)); verify(patientService).savePatient(patient); }
@Override public void testResults(SubmissionResults results) { assertThat(results.getPatient().isDead(), is(true)); assertThat(results.getPatient().getDeathDate(), is(date)); assertThat(results.getPatient().getCauseOfDeath().getConceptId(), is(1001)); } }.run();
@Test public void testNotSettingDate() throws Exception { MarkPatientDeadTagHandler.Action action = tagHandler.newAction(); action.setDeathDateFromEncounter(true); action.applyAction(formEntrySession); assertThat(patient.isDead(), is(true)); assertThat(patient.getDeathDate(), nullValue()); verify(patientService).savePatient(patient); }
@Override public void applyAction(FormEntrySession session) { Patient patient = session.getPatient(); Encounter encounter = session.getEncounter(); patient.setDead(true); if (deathDateFromEncounter) { if (patient.getDeathDate() == null || !preserveExistingDeathDate) { patient.setDeathDate(encounter.getEncounterDatetime()); } } if (patient.getCauseOfDeath() == null || !preserveExistingCauseOfDeath) { Concept causeOfDeath = null; if (causeOfDeathFromObs != null) { causeOfDeath = findObsCodedValue(session.getEncounter(), causeOfDeathFromObs); } if (causeOfDeath == null) { // don't overwrite with Unknown, even if we haven't specifically said to preserve existing causeOfDeath = patient.getCauseOfDeath(); } if (causeOfDeath == null) { causeOfDeath = getUnknownConcept(); } patient.setCauseOfDeath(causeOfDeath); } patientService.savePatient(patient); }