Hi @ian.mcnicoll .
Multiprac Infection Control solution uses openEHR archetypes and templates to model all of the clinical data in this context, including the laboratory request and laboratory result.
Of your three options we are closest to 2, with one difference worth mentioning: each update is a new version of the same event composition, not an edit to a persistent one. So there is arguably a fourth option sitting between your 1 and 2.
In our system, lab requests and lab results are represented using separate openEHR templates, and they are linked through the lab order number. Each has its own independent version history: one VERSIONED_OBJECT per order for the request, and one per order for the result.
The LAB request template contains lab test INSTRUCTION archetype and lab test ACTION archetype. The report template contains the lab test ACTION archetype and OBSERVATION archetype. Specimen collected, received and processed are represented using the specimen CLUSTER archetype rather than as ISM careflow steps. Report status (interim, final, supplementary, corrected etc.) are represented in the lab test OBSERVATION archetype.
All HL7 messages sharing a lab order number commit to the same versioned composition. For example, the first message creates version 1 with an interim status, the second HL7 message creates version 2 with a final status. Because openEHR versions are immutable, nothing is overwritten. The earlier version stays available for inspection while the latest represents current clinical state.
We deliberately do not carry previous status transitions forward into the latest version. Each version holds the clinical state conveyed by that message. Where an application needs to show progression, it reads the version history and its timestamps. We treat that as application logic rather than something to be reconstructed from separate event compositions.
In our experience the great majority of application and clinical workflows need the current request or result, not the full sequence of historical states. Our infection control rules generally need the final result to fire correctly; interim results are received and stored, but many rules deliberately wait for the final. We have not needed AQL to reconstruct current state from a set of event compositions. The HL7 message is the source of the clinical information, so we retrieve the latest version of the relevant versioned object. If historical information is required, the earlier immutable versions remain available.
After around 20 years working with this type of clinical system, I haven’t seen many requirements where the application needs to reconstruct the laboratory state from every individual status event. There are certainly use cases where the event history is clinically important, so I wouldn’t suggest that one approach is universally correct, but where the primary requirement is current clinical state, openEHR versioning has given us a fairly natural way to get there without a composition per event.
Thanks,
Chunlan