On 26/06/2016 22:23, pablo pazos wrote:
Thanks for your message Ian,

IMO avoiding the implementation of ACTIVITY.timing raises the question of why that was introduced in the model and if we should keep it or not.

it was included on the assumption that timing would be represented as a formal expression, like HL7 GTS, which uses a ISO 8601-derived expression. I think the attribute should stay there because it allows this kind of approach, which is more computable. Whether it is always used is another question - I am concerned that there may be too much ad hoc modelling going on in archetype-land, without paying enough attention to the RM facilities in some areas.


On the other hand, I think timing there can be a powerful tool for advanced systems that can use that info to manage / automate flows / processes.


The problem with timing is that it is difficult to specify in a generic way, and I have seen at least 3 kinds of proposals:

1. Computable expressions
2. Terminology based
3. Structure based


*1. Computable expressions*

+ idea: try to define a code that can be processed by software.
+ pro: everyone loves codes, systematized approach
+ con: expressions are too complex to be defined just by a code, makes this solution almost unrealistic.

only some expressions are too complex; most are not. It's always a 90/10 situation. I think the mistake on the part of some is that because there is a 10% set of cases that can't easily be represented as expressions, they want to ditch that approach and use something else entirely, when in fact expressions would work most of the time.



*2. Terminology based*

+ idea: just define all the possible timing schemes and their definitions e.g. QID, Q4H, AC, PC, ...
+ pro: easy to use, easier to define and maintain than approach 1.
+ con: ?


the con is that you have to have a terminology concept for every possible permutation of expressions - that's not realistic. Unless you rely on post-coordination, but then you are really just using terminology as a weak expression language.


*3. Structure based*

+ idea: define a structure (maybe a hierarchy in an UML model) to represent different timing expressions (like the HL7 time expressions datatypes or what Ian mentioned of creating a CLUSTER archetype) + pro: easy to specify in an OO model, extendable, easy to implement (the model can include state + behavior)
+ con: ?


this is the equivalent of 1. If you can represent something as a formal structure, you can represent it as an expression, these are two things that lie on either side of the thing called a parser ;-)

Also, the structural representation of a very compact expression string may be quite large.



I would like we consider to make a proposal on how to use timing on the openEHR specs, oriented to implementation, and not focused only on medication (current specs examples are just for medication).

I'm not sure if we need to do anything special - if someone wants to use FHIR timing <http://hl7-fhir.github.io/datatypes.html#Timing>, we just need an expression form of that, and since ACTIVITY.timing is a DV_PARSEABLE, its syntax can be set to 'FHIR::timing' or similar.

- thomas


1. We can extend our timing specification to be compatible with the HL7 / FHIR one (add/modify our datatypes). I think with this we don't need to make custom timing specs on archetypes. 2. Add to our terminology spec the most commonly used terms for timing, so we can use them as part of our timing specification. 3. Add more examples oriented to long term treatment, procedures, tests, etc. alongside with medication therapy in the specs, or maybe in a "timing addendum".

OR

Define to remove timing completely from the openEHR model and rely on archetyped timing on ACTIVITY.description.

_______________________________________________
openEHR-technical mailing list
openEHR-technical@lists.openehr.org
http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org

Reply via email to