We have this scenario: one ACTIVITY should be executed by two different ACTIONS (i.e. we have 2 ACTION archetypes).
When commiting anything to a openEHR repository, it sould be enclosed by a COMPOSITION.
Now, the first commit will be the INSTRUCTION/ACTIVITY, that will create a new COMPOSITION.
Then, when the first ACTION instance needs to be commited for that ACTIVITY,
a) should I create a new COMPOSITION? or
b) should I commit a new version of the existing COMPOSITION? (the new version will have the ACTIVITY and the ACTION)
Later an instance of the other ACTION is commited, and:
a) should it be commited as a completely new COMPOSITION?, or
b) should it be a version of the existing COMPOSITION that contains the previous ACTION?
So we have 3 scenarios: 1) only one COMPOSITION instance with 3 versions, 2) 3 different COMPOSITIONS, 3) one COMPOSITION for the ACTIVITY and other COMPOSITION for the ACITONS (with 2 versions).
The general approach we have used is to create a new Composition for
each 'event' i.e. Option 3, although it is common that the very first
Action e.g "Ordered" happens simultaneously with the Instruction and
can be committed in the same Composition.
e.g For Medication
A. COMPOSITION "Doctor Order"
INSTRUCTION.medication
ACTION.medication "Medication Ordered"
B. COMPOSITION "Nurse Administration"
ACTION.medication "Medication Administered"
C. COMPOSITION "Doctor Order"
ACTION.medication "Medication cancelled"
Normally, each ACTION will be in its own COMPOSITION, unless the ACTION happens to be essentially simultaneous with the creation of the INSTRUCTION, i.e. the order. Apart from that circumstance, you can expect a pattern like this: time 1
Just a small related question: can I continue executing ACTIONs for an ACTIVITY that has already be “completed”? or do I need to create another ACTIVITY with the same information in order to have another execution workflow?
e.g. is this valid?
create INSTRUCTION/ACTIVITY
create ACTION (state = scheduled)
create ACTION (state = active)
create ACTION (state = completed)
create ACTION (state = scheduled) // for the same INSTRUCTION/ACTIVITY instance as the previous flow: scheduled > active > completed
Pablo, it’s completely up to what you have archetyped. If you have an ACTION who state is ‘active’, you can map numerous care pathway steps to that, e.g. you might map ‘dispense’, ‘administer’, ‘re-issue’ all to the ‘active’ state. So that means 3 different kinds of Action that can keep occurring in time, and each time, the state machine is still in ‘active’ state. Even if you only map one care pathway step, say ‘administer’ to the active state, you can of course have numerous occurrences of administration over time. So both ways, a single ACTIVITY can lead to numberous ACTIONs. - thomas
I agree with that, but I think we are talking about different scenarios. I understand we can have various ACTIONs for “active” states (and reschedule or suspend/resume transitions).
My question is: if an ACTIVITY is “completed” (or “aborted” or “expired”, i.e. a terminated state)
is it possible or valid to start another execution cycle for that ACTIVITY instance? or,
should I create another ACTIVITY instance with the same info in order to execute it? i.e. create another ACTION with state “scheduled” or “active” for the same ACTIVITY that is “completed”.
Ah - good question (sorry, didn’t read your earlier post properly!) The current model is designed is that once an ACTIVITY is completed by an ACTION putting it into a terminal state, then that’s it. So for things like long term asthma medication, contraceptive pill, or any chronic condition medication, where the intent of the prescription (or hospital order) is to be more or less indefinite, with the patient just getting repeats then the ACTIVITY is always active or suspended, and never terminated. But even if it is terminated, e.g. the asthma patient gets better (it does happen!), it just means that if it has to be restarted, it will be a new order, which reflects what happens in real life. The key to this is that what is recorded (in terms of INSTRUCTION+ACTIVITY, and ACTIONs) should reflect real life of orders/prescriptions, repeats, not just the taking of the drugs themselves. hope this is clearer. - thomas
Yes! this is really clear and has been a great help.
Thanks a lot.
Just to give info that may help other in the future: in our case, the instruction is a recommendation to do some exercise, and we need to know if the activity (the exercise) is completed. We consider a completed activity to be one exercise instance, e.g. one walk in the park. But the recommendation is something like “walk 30 min/day for 2 weeks”, so I think a good approach is to create one ACTIVITY for each day, and let the patient change the state of each day’s ACTIVITY (scheduled, started, completed).
In this case, if the day passes and the activity was never “active”, we’ll mark it as “expired”.
Of course, any comments about this scenario are very welcome.
Can you give a specific use-case? In general I would expect a
completed activity to need to need a new instruction. As Thomas says,
if you have a scenario where there multiple rounds of activity take
place, I would regard that as the instruction still being active, and
the completed state would only apply when all of the rounds had been
completed.
BTW - I have updated all the ACTION archetypes on CKM to have nodeIds
on ISM_TRANSITION.
Thanks for the example. It makes more sense now, although I have to
say that it feels to me as if you are overloading the idea of
ACTIVITY/ACTION in this scenario. My approach would have been to
regard the whole exercise program as a single task modelled as an
Activity, and just to capture the patient-reported progress as part of
the ACTION archetype, and only change state at a much higher-level i.e
when the whole program is scheduled, starts or stops.
There is nothing technically wrong with what you are suggesting, of course.
I would be interested in other's thoughts - not sure if this is more
appropriate for the clinical list?
I’m trying to do it “by the book”, obviously clinical input is essential to model things
What do you think about the ACTION to report patient activity?
Should I create a new composition every time the patient report something? or
Should I version the same composition on every exercise report for the same exercise program?
At first I was thinking about having one ACTIVITY and versioning COMPOSITIONs to represent states, but then ISM states came into play
In this scenario, I could keep exercise scheduling and activation states just in the app, and commit a COMPOSITION only when the exercise is finished, so I can interpret the COMPOSTION as a finished activity/exersice on our openEHR repository (without putting an explicit state on the ACTION archetype), and as you said, changing the state of the ACTIVITY as a much higher level by a clinician.
How is the patient reporting back their exercise activity to the clinician?
I think it is better to create a new Composition for each 'patient
report' rather than re-versioning a single Composition. The question
then is how and, how often, the patient sends a report.
As an example, let's say the patient reports weekly. In that case I
would generate a new event Composition for each weekly report.
Perhaps you could use a CLUSTER archetype to represent both
recommended exercise, and the patient reported outcome, to be used in
both the INSTRUCTION/ACTIVITY and in the ACTIONs. Can you gove more
information on some of the detail of the exercise recommendations and
the patient reports.
It is an application for the patient (technically is a mobile web app).
Data is stored in an openEHR repository, then another app (maybe an EMR or a care plan mgt system) let the clinician access the patient activity, evaluate the results, do another recommendation, …
I think the reporting frequency maybe daily or less (i.e. 3 times a week, once a week, etc.). Technically this could be different, e.g. if the patient doesn’t have connection to the server, data is stored locally until synchronization could be done.
Right now the recommendation is very simple: do this exercise/sport, for this time, with this frequency.
The patient will report when he started and ended the activity,and what was the perceived effort (Borg scale).
The openEHR specification is clear about the notion of update/versioning of a composition or creating a new event. The idea of a persistent composition is useful for information where new data ALWAYS makes previous data redundant not incorrect at the time (such as a medication list in a shared health record). This is useful for allergies and other lists which have to be maintained.
An event composition will relate to information at a particular time which may be collected again but does not replace the previous information. This is usually the case for most recordings. A new version of this composition will invalidate the previous version (as key data was missing or incorrect).
What “redundant data” means in the context of persisten compositions?
I.e. if I need to remove a medication from the medication list because the patient no longer takes that drug, as I see it the medication is invalid (not redundant) at the present moment.
Please be as specific as you can, I really want to understand the difference. Thanks a lot.
Hi Pablo,
You need to reversion the persistent composition without the medication in it. Ideally an action showing it has been ceased should be recorded in an event composition.
Cries that help?
Sam
Hi Sam, I understood how to do it, what I don’t understand is why previous data is “redundant” and not “invalid/incorrect”.
You mentioned this on your previous message:
The idea of a persistent
composition is useful for information where new data ALWAYS makes
previous data redundant not incorrect at the time (such as a medication
list in a shared health record).