UpdateTime proposal
Introduction
There is a requirement to be able to manage distributed updates between intermittently connected systems using timestamps to identify the most recently updated version of the information conveyed.
It is recognised that this approach is problematic because of the need to synchronise system clocks across systems. However it is an approach that is commonly used, and so should be supported by HL7 communication specifications.
Use cases
Supporting distributed changes to demographic information, where the patient address, telephone numbers and registered physicians can be changed independantly in different locations and computer systems.
Existing HL7 solutions
This timestamp information may be modelled as the controlAct.author.time.high for the most recent control act that applies to the information item in question.
One approach is to say that a separate communication (message / SOA method / Document) should be used for each change to an independent piece of information. This is impractical.
An alternate approach is to say that the controlActs should be conveyed with a "subject" actRelationship off the focal act of the payload. The datatypes R2 HIXT.controlActRef would be used to point from an HL7 attribute (such as an address or telephone number) to the controlAct that triggered the most recent change or verification of that information.
Proposed Solution
There is an even simpler solution, which is to add updateTime : TS in the same way that updateMode is defined. updateMode is conceptually a denormalisation of the controlAct, but with different granularity. I believe that updateTime is similar. --GrahameGrieve 20:52, 1 August 2007 (CDT)
The following is an example of the use of updateTime in comparison to the controlAct.author.time method using a small healthcare agent update message:
ControlAct.author.time approach:
<AgentRole> <component> <agentControlAct> <id root="12712829-7ED7-76AD-13ED-125621EDA72C"/> <author> <time value="200603121432"/> <agent nullFlavor="NI"/> </author> </agentControlAct> </component> <id root="ADFEE4FB-1375-7443-8755-F43ED798BC62"/> <code codeSystem="2.16.840.1.113883.2.1.6.18.53" code="04" displayName="Retinal grader"/> <agentPerson> <id root="2.16.840.1.113883.2.1.4.7.12" extension="CHES02"/> <name> John Cholmondly-Warner <controlActIdRef root="12712829-7ED7-76AD-13ED-125621EDA72C"/> </name> </agentPerson> </AgentRole>
updateTime approach:
<AgentRole> <id root="ADFEE4FB-1375-7443-8755-F43ED798BC62"/> <code codeSystem="2.16.840.1.113883.2.1.6.18.53" code="04" displayName="Retinal grader"/> <agentPerson> <id root="2.16.840.1.113883.2.1.4.7.12" extension="CHES02"/> <name updateTime="20030809123412"> John Cholmondly-Warner </name> </agentPerson> </AgentRole>