Copying an Obs doesn't copy over an associated Order


(Mark Goodrich) #1

Hello all–

When copying an Obs, any order associated with that Obs is not copied over. This seems incorrect to me, particularly because since Obs are immutable, whenever an Obs is modified it is “copied”, resulting in the loss of any linkage to an Order.

However, there is one unit test that expects this behavior:

Do we need to special case this? It seems like this test is assuring that when an Encounter is transferred from one patient to another, we don’t copy over any Orders associated with that Encounter, which seems fine to me. But do we really need to make sure any Obs on that Encounter that were linked to an order no longer are? I assume the point of this ticket was to make sure that Orders aren’t inadvertently transferred from one patient to another. But the “Order” on an Obs refers to the the Order that resulted in this Obs (as I understand it). I don’t think we want to lose this information?

fyi @dkayiwa @mseaton @burke

Take care, Mark


(Mike Seaton) #2

I’d agree with you @mogoodrich, it would seem that this connection to the order should be preserved.


(Daniel Kayiwa) #3

This commit https://github.com/openmrs/openmrs-core/commit/3a960636ce970b03b4709cf4b17ca7e84f3a9946 was done as part of this ticket https://issues.openmrs.org/browse/TRUNK-257

After having looked at it again, i believe that @mogoodrich you are correct. We should have fixed it in a way that does not require the removal of this line from Obs.java newObs.setOrder(obsToCopy.getOrder());


(Mark Goodrich) #4

Thanks @mseaton @dkayiwa… in the coming days I will add back in the line that copies over the Orders when copying an Obs and then also change the “transferEncounter” test so that it doesn’t expect the Orders to be removed.