cerner/clara-rules

Support complex nested negations of arbitrary depth

WilliamParker opened this issue · 0 comments

As mentioned in #149 (comment) our existing functionality for extracting complex nested negations added in #149 only works for a single nested layer. That is, we can do things like

[A (= ?a a)]
[:not [:and [B]
            [:not [C (= join-field ?a]]]]

but not things like

[A (= ?a a)]
[:not [:and [B]
            [:not [:and [C]
                        [:not [D (= join-field ?a)]]]]]]

Admittedly this kind of three-layer-deep negation is not the most common case, but I've seen cases where we had to work around this shortcoming before.