# Rules in archetypes - getting it right

**URL:** <https://discourse.openehr.org/t/rules-in-archetypes-getting-it-right/1272>\
**Category:** ADL\
**Created:** [7 February 2021 15:16 UTC](https://discourse.openehr.org/t/rules-in-archetypes-getting-it-right/1272 "2021-02-07T15:16:16Z")\
**Posts on this page:** 1\
**Showing post:** 5

<div class="post-metadata">

**Author:** ![thomas.beale](https://discourse.openehr.org/user_avatar/discourse.openehr.org/thomas.beale/32/35_2.png) [@thomas.beale](https://discourse.openehr.org/u/thomas.beale)\
**Post date:** [8 February 2021 16:30 UTC](https://discourse.openehr.org/t/rules-in-archetypes-getting-it-right/1272/5 "2021-02-08T16:30:19Z")

</div>

I converted the motricity example to the symbolic form, just to think about it. Below, the original, then the converted.

```auto
rules
    $arm_score:Integer ::= /data[id2]/events[id3]/data[id4]/items[id5]/items[id7]/value/value + /data[id2]/events[id3]/data[id4]/items[id5]/items[id9]/value/value + /data[id2]/events[id3]/data[id4]/items[id5]/items[id11]/value/value
    arm: $arm_score < 99 implies /data[id2]/events[id3]/data[id4]/items[id5]/items[id13]/value/magnitude = $arm_score
    arm_round_up: $arm_score = 99 implies /data[id2]/events[id3]/data[id4]/items[id5]/items[id13]/value/magnitude = 100
    $leg_score:Integer ::= /data[id2]/events[id3]/data[id4]/items[id6]/items[id14]/value/value + /data[id2]/events[id3]/data[id4]/items[id6]/items[id16]/value/value + /data[id2]/events[id3]/data[id4]/items[id6]/items[id18]/value/value
    leg: $leg_score < 99 implies /data[id2]/events[id3]/data[id4]/items[id6]/items[id20]/value/magnitude = $leg_score
    leg_round_up: $leg_score = 99 implies /data[id2]/events[id3]/data[id4]/items[id6]/items[id20]/value/magnitude = 100
    sum_score: /data[id2]/events[id3]/data[id4]/items[id24]/value/magnitude = /data[id2]/events[id3]/data[id4]/items[id5]/items[id13]/value/magnitude + /data[id2]/events[id3]/data[id4]/items[id6]/items[id20]/value/magnitude
    total_score: exists /data[id2]/events[id3]/data[id4]/items[id24]/value/magnitude implies (/data[id2]/events[id3]/data[id4]/items[id22]/value/magnitude = /data[id2]/events[id3]/data[id4]/items[id24]/value/magnitude / 2) 

```

Reworked in binding form:

```auto
rules
    arm_score_computed:Integer ::= pinch_grip + elbow_extension + shoulder_abduction
    arm: arm_score_computed < 99 implies arm_score = arm_score_computed
    arm_round_up: arm_score_computed = 99 implies arm_score = 100

    leg_score_computed:Integer ::= ankle_dorsiflexion + knee_extension + hip_flexion
    leg: leg_score_computed < 99 implies leg_score = leg_score_computed
    leg_round_up: leg_score_computed = 99 implies leg_score = 100

    sum_score: summed_score = arm_score + leg_score
    total_score: exists summed_score implies (total_score = summed_score / 2) 

symbols
  bindings = <
    ["pinch_grip"] = <"/data[id2]/events[id3]/data[id4]/items[id5]/items[id7]/value/value">
    ["elbow_extension"] = <"/data[id2]/events[id3]/data[id4]/items[id5]/items[id9]/value/value">
    ["shoulder_abduction"] = <"/data[id2]/events[id3]/data[id4]/items[id5]/items[id11]/value/value">
    ["arm_score"] = <"/data[id2]/events[id3]/data[id4]/items[id5]/items[id13]/value/magnitude">
    ["ankle_dorsiflexion"] = <"/data[id2]/events[id3]/data[id4]/items[id6]/items[id14]/value/value">
    ["knee_extension"] = <"/data[id2]/events[id3]/data[id4]/items[id6]/items[id16]/value/value">
    ["hip_flexion"] = <"/data[id2]/events[id3]/data[id4]/items[id6]/items[id18]/value/value">
    ["leg_score"] = <"/data[id2]/events[id3]/data[id4]/items[id6]/items[id20]/value/magnitude">
    ["summed_score"] = <"/data[id2]/events[id3]/data[id4]/items[id24]/value/magnitude">
    ["total_score"] = <"/data[id2]/events[id3]/data[id4]/items[id22]/value/magnitude">
  >

```

---

_[View the full topic](https://discourse.openehr.org/t/rules-in-archetypes-getting-it-right/1272)._
