Skip to content

Commit

Permalink
Merge pull request #1573 from geoff-wasilwa/TRUNK-257
Browse files Browse the repository at this point in the history
TRUNK-257: Fix to not copy Orders while moving Encounter Data
  • Loading branch information
dkayiwa committed Oct 1, 2015
2 parents d8ca28d + 6b42f48 commit 3a96063
Show file tree
Hide file tree
Showing 5 changed files with 7 additions and 25 deletions.
14 changes: 0 additions & 14 deletions api/src/main/java/org/openmrs/Encounter.java
Expand Up @@ -761,7 +761,6 @@ public void removeProvider(EncounterRole role, Provider provider) {
* @should copy all Encounter data except visit and assign copied Encounter to given Patient
*/
public Encounter copyAndAssignToAnotherPatient(Patient patient) {
Map<Order, Order> oldNewOrderMap = new HashMap<Order, Order>();
Encounter target = new Encounter();

target.setChangedBy(getChangedBy());
Expand All @@ -787,26 +786,13 @@ public Encounter copyAndAssignToAnotherPatient(Patient patient) {
target.getEncounterProviders().add(encounterProviderCopy);
}

//orders
for (Order order : getOrders()) {
Order orderCopy = order.copy();
orderCopy.setEncounter(target);
orderCopy.setPatient(patient);
target.addOrder(orderCopy);
oldNewOrderMap.put(order, orderCopy);
}

Context.getEncounterService().saveEncounter(target);

//obs
for (Obs obs : getAllObs()) {
Obs obsCopy = Obs.newInstance(obs);
obsCopy.setEncounter(target);
obsCopy.setPerson(patient);
//refresh order reference
Order oldOrder = obsCopy.getOrder();
Order newOrder = oldNewOrderMap.get(oldOrder);
obsCopy.setOrder(newOrder);
target.addObs(obsCopy);
}

Expand Down
1 change: 0 additions & 1 deletion api/src/main/java/org/openmrs/Obs.java
Expand Up @@ -191,7 +191,6 @@ public static Obs newInstance(Obs obsToCopy) {
newObs.setValueModifier(obsToCopy.getValueModifier());
newObs.setValueText(obsToCopy.getValueText());
newObs.setComment(obsToCopy.getComment());
newObs.setOrder(obsToCopy.getOrder());
newObs.setEncounter(obsToCopy.getEncounter());
newObs.setCreator(obsToCopy.getCreator());
newObs.setDateCreated(obsToCopy.getDateCreated());
Expand Down
2 changes: 1 addition & 1 deletion api/src/test/java/org/openmrs/EncounterTest.java
Expand Up @@ -1377,7 +1377,7 @@ public void copy_shouldCopyAllEncounterDataExceptVisitAndAssignCopiedEncounterTo
Assert.assertEquals(1, encounter.getObs().size());
Assert.assertEquals(1, encounterCopy.getObs().size());
Assert.assertEquals(1, encounter.getOrders().size());
Assert.assertEquals(1, encounterCopy.getOrders().size());
Assert.assertEquals(0, encounterCopy.getOrders().size());

Assert.assertEquals(1, encounter.getProvidersByRole(encounterRole).size());
Assert.assertEquals(1, encounterCopy.getProvidersByRole(encounterRole).size());
Expand Down
14 changes: 5 additions & 9 deletions api/src/test/java/org/openmrs/api/EncounterServiceTest.java
Expand Up @@ -2735,13 +2735,13 @@ public void getEncounterRolesByName_shouldFindEncounterRolesByName() throws Exce
*/
@Test
@Verifies(value = "transfer an encounter with orders and observations to given patient", method = "transferEncounter(Encounter,Patient)")
public void transferEncounter_shouldTransferAnEncounterWithOrdersAndObservationsToGivenPatient() throws Exception {
public void transferEncounter_shouldTransferAnEncounterWithObservationsButNotOrdersToGivenPatient() throws Exception {
executeDataSet(TRANSFER_ENC_DATA_XML);
Patient targetPatient = Context.getPatientService().getPatient(201);
// encounter has 2 obs which are connected with the same order
Encounter sourceEncounter = Context.getEncounterService().getEncounter(201);

Assert.assertEquals(1, sourceEncounter.getOrders().size());
Assert.assertEquals(2, sourceEncounter.getOrders().size());
Assert.assertEquals(2, sourceEncounter.getObs().size());

//transfer
Expand All @@ -2754,19 +2754,15 @@ public void transferEncounter_shouldTransferAnEncounterWithOrdersAndObservations
Assert.assertEquals(targetPatient, transferredEncounter.getPatient());

//check order
Assert.assertEquals(1, transferredOrders.size());
Order transferredOrder = transferredOrders.get(0);
Assert.assertEquals(targetPatient, transferredOrder.getPatient());
Assert.assertEquals(0, transferredOrders.size());

//check obs
Assert.assertEquals(2, transferredObservations.size());
Assert.assertEquals(targetPatient, transferredObservations.get(0).getPerson());
Assert.assertEquals(targetPatient, transferredObservations.get(1).getPerson());

//check if obs has reference to the same order
Assert.assertEquals(transferredOrder, transferredObservations.get(0).getOrder());
Assert.assertEquals(transferredOrder, transferredObservations.get(1).getOrder());
Assert.assertSame(transferredObservations.get(0).getOrder(), transferredObservations.get(1).getOrder());
Assert.assertNull(transferredObservations.get(0).getOrder());
Assert.assertNull(transferredObservations.get(1).getOrder());

//check if form is transferred
Assert.assertNotNull(transferredEncounter.getForm());
Expand Down
Expand Up @@ -29,6 +29,7 @@
<encounter encounter_id="201" visit_id="201" form_id="200" encounter_type="1" encounter_datetime="2008-01-01 00:00:00.0" patient_id="200" location_id="1" creator="1" date_created="2008-02-01 00:00:00.0" voided="0" uuid="a3c4fe3c-90df-11e0-9c16-705ab6a580e0"/>
<!-- Orders -->
<orders order_id="201" order_type_id="17" order_number="2" urgency="ROUTINE" patient_id="200" encounter_id="201" concept_id="1" date_activated="2012-08-19 00:00:00.0" orderer="1" creator="1" date_created="2006-03-11 15:57:35.0" voided="1" voided_by="1" date_voided="2008-02-01 00:00:00.0" void_reason="Because" uuid="a1bc39d2-9a62-46b1-9df6-c35d3cb29e08" order_action="NEW" care_setting="1"/>
<orders order_id="202" order_type_id="17" previous_order_id="201" order_number="2" urgency="ROUTINE" patient_id="200" encounter_id="201" concept_id="1" date_activated="2012-08-22 00:00:00.0" orderer="1" creator="1" date_created="2012-08-22 00:00:00.0" voided="1" voided_by="1" date_voided="2008-02-01 00:00:00.0" void_reason="Because" uuid="639EDCCB-9F54-495C-8FE3-058D7A81E92B" order_action="REVISE" care_setting="1"/>
<!-- Obs -->
<obs obs_id="201" order_id="201" person_id="200" encounter_id="201" concept_id="5089" obs_datetime="2005-01-01 00:00:00.0" location_id="1" value_numeric="1.0" creator="1" date_created="2006-02-10 15:57:35.0" voided="false" uuid="a0b5fbfb-6c8b-43fd-918d-41d578d571ec"/>
<obs obs_id="202" order_id="201" person_id="200" encounter_id="201" concept_id="5497" obs_datetime="2005-01-01 00:00:00.0" location_id="1" value_numeric="2.0" creator="1" date_created="2006-02-11 15:57:35.0" voided="false" uuid="a6d6835c-c038-4ca1-bead-4bfa36bd7fa0"/>
Expand Down

0 comments on commit 3a96063

Please sign in to comment.