I'm fine with this improvements, the only thing I feel that can be troublesome for users is having data_bindings and computed values in a completely different format/style
El vie., 1 feb. 2019 a las 13:01, Thomas Beale (<thomas.be...@openehr.org>) escribió: > For many years, there has been a little-used capability in ADL which > enables basic expressions to be stated such as the following in the Apgar > Observation archetype: > > *rules* > > *score_sum*: > /data[id3]/events[id4]/data[id2]/items[id26]/value[id44]/magnitude = > /data[id3]/events[id4]/data[id2]/items[id6]/value[id40]/value + > /data[id3]/events[id4]/data[id2]/items[id10]/value[id39]/value + > /data[id3]/events[id4]/data[id2]/items[id14]/value[id41]/value + > /data[id3]/events[id4]/data[id2]/items[id18]/value[id42]/value + > /data[id3]/events[id4]/data[id2]/items[id22]/value[id43]/value > > where all those paths point to the various Apgar leaf data values, i.e. > total, heart rate etc. > > This kind of statement is intended to assert that the total value = the > sum of the 5 elements, as per the Apgar formula. However, it was never that > clear that it is an assertion, not a value-setting formula, which might > also be something we want. > > It's also not very readable, even if the paths were rendered with a tool, > they are long and painful to read. > > Another kind of assertion was to for conditional mandation of some part of > the data depending on some other data element (or more generally, an > expression), e.g. > > *rules* > > /data[id2]/items[id21]/items[id15]/value[id50]/defining_code *matches > *{[at19]} *implies exists */data[id2]/items[id21]/items[id20] > > Here the logical intention is to mandate that the data at the second path, > which is about details of transfer (i.e. discharge to other care) if the > value of the datum at the first path, which is 'type of separation' = > at19|transfer|. Other examples are mandating data containing details of > tobacco use if the value of the data item 'tobacco use' /= at44|non-user|. > > This also is not that easy to read, or clear in its intentions. > > More recently, as part of the development of a simple expression language > that can be used across openEHR (archetypes, Task Planning, GDL etc), I > proposed some key improvements to expressions in archetypes, namely: > > - symbolic names for paths, done by bindings > - an explicit 'check' instruction to make the intention of assertion > clearer > - a defined() predicate to replace the use of 'exists' > > Examples of how these changes look are shown here in the working copy of > the ADL2 spec > <https://specifications.openehr.org/releases/AM/latest/ADL2.html#_rules_section>. > In this form, the above Apgar example becomes: > > *rules* > *check *$apgar_total_value = $apgar_heartrate_value + $ > apgar_breathing_value + $apgar_reflex_value + $apgar_muscle_value + $ > apgar_colour_value > > *data_bindings* > > content_bindings = < > ["apgar_breathing_value"] = > <"/data[id3]/events[id4]/data[id2]/items[id10]/value[id39]/value"> > ["apgar_heartrate_value"] = > <"/data[id3]/events[id4]/data[id2]/items[id6]/value[id40]/value"> > ["apgar_muscle_value"] = > <"/data[id3]/events[id4]/data[id2]/items[id14]/value[id41]/value"> > ["apgar_reflex_value"] = > <"/data[id3]/events[id4]/data[id2]/items[id18]/value[id42]/value"> > ["apgar_colour_value"] = > <"/data[id3]/events[id4]/data[id2]/items[id22]/value[id43]/value"> > ["apgar_total_value"] = > <"/data[id3]/events[id4]/data[id2]/items[id26]/value[id44]/magnitude"> > > > > And the smoking example is: > > *check *$is_smoker = *True **implies **defined *($smoking_details) > > Note that this does not address the possible requirement of being able to > state a formula that *sets *a field, or defines a purely computed value > at a path. > > We are still working on details of the expression language, variable > binding idea and so on. I am interested in feedback on the approach shown > in the spec, preferably provided here in the first instance. > > - thomas > _______________________________________________ > openEHR-technical mailing list > openEHR-technical@lists.openehr.org > > http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org > -- [image: VeraTech for Health SL] <https://htmlsig.com/t/000001C268PZ> [image: Twitter] <https://htmlsig.com/t/000001C47QQH> [image: LinkedIn] <https://htmlsig.com/t/000001C4DPJG> [image: Maps] <https://htmlsig.com/t/000001BZTWS7> Diego Boscá Tomás / Senior developer diebo...@veratech.es yamp...@gmail.com VeraTech for Health SL +34 654604676 <+34%20654604676> www.veratech.es La información contenida en este mensaje y/o archivo(s) adjunto(s), enviada desde VERATECH FOR HEALTH, SL, es confidencial/privilegiada y está destinada a ser leída sólo por la(s) persona(s) a la(s) que va dirigida. Le recordamos que sus datos han sido incorporados en el sistema de tratamiento de VERATECH FOR HEALTH, SL y que siempre y cuando se cumplan los requisitos exigidos por la normativa, usted podrá ejercer sus derechos de acceso, rectificación, limitación de tratamiento, supresión, portabilidad y oposición/revocación, en los términos que establece la normativa vigente en materia de protección de datos, dirigiendo su petición a Avda Puerto 237, 1º, pta 1 - 46011 Valencia o bien a través de correo electrónico d...@veratech.es Si usted lee este mensaje y no es el destinatario señalado, el empleado o el agente responsable de entregar el mensaje al destinatario, o ha recibido esta comunicación por error, le informamos que está totalmente prohibida, y puede ser ilegal, cualquier divulgación, distribución o reproducción de esta comunicación, y le rogamos que nos lo notifique inmediatamente y nos devuelva el mensaje original a la dirección arriba mencionada. Gracias
_______________________________________________ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org