# Conjunction and Disjunction

## Compound Expression Constraints <img src="https://3222256335-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsOJBD7YbxAy9bD1Ko9L9%2Fuploads%2Fgit-blob-fe66e95cce4239d6bed95749583c755fd072b1a3%2FScreenshot%202025-09-24%20at%2017.38.47.png?alt=media" alt="Included in ECL Core" data-size="line">

Expression constraints can be built up from smaller parts using conjunction (i.e. AND) and disjunction (i.e. OR). The simplest example of this is where the conjunction or disjunction is used between two simple expressions. For example, the following expression constraint is satisfied only by clinical findings which are *both* a disorder of the lung *and* an edema of the trunk. This gives the same result as a mathematical *intersection* between the set of `19829001 | Disorder of lung|` descendants and the set of 301867009 | Edema of trunk| descendants.

```
< 19829001 |Disorder of lung| AND < 301867009 |Edema of trunk|
```

Please note that all keywords are case insensitive, so the following two expression constraints are equivalent to the above:

```
< 19829001 |Disorder of lung| and < 301867009 |Edema of trunk|
```

```
 < 19829001 |Disorder of lung| And < 301867009 |Edema of trunk|
```

The next expression constraint is satisfied only by clinical findings which are *either* a disorder of the lung *or* an edema of the trunk. This gives the same result as a mathematical *union* of the set of `19829001 | Disorder of lung|` descendants and the set of `301867009 | Edema of trunk|` descendants. For this reason, an *OR* operator will usually allow more valid clinical meanings than an *AND* operator.

```
< 19829001 |Disorder of lung| OR < 301867009 |Edema of trunk|
```

Conjunction and disjunction operators may also be combined with the use of the 'member of' function, as shown below:

{% code overflow="wrap" %}

```
< 19829001 |Disorder of lung| AND ^ 700043003 |Example problem list concepts reference set|
```

{% endcode %}

This expression constraint is satisfied only by concepts that belong to the `19829001 | Disorder of lung|` hierarchy *and* are also members of the `700043003 | Example problem list concepts reference set|` .

When more than one conjunction or more than one disjunction is used, round brackets can be optionally applied. For example, the following expression constraints are all valid and equivalent to each other:

<pre data-overflow="wrap"><code><strong>&#x3C; 19829001 |Disorder of lung| AND &#x3C; 301867009 |Edema of trunk| AND
</strong>^ 700043003 |Example problem list concepts reference set|
</code></pre>

{% code overflow="wrap" %}

```
(< 19829001 |Disorder of lung| AND < 301867009 |Edema of trunk| ) AND
^ 700043003 |Example problem list concepts reference set|
```

{% endcode %}

{% code overflow="wrap" %}

```
< 19829001 |Disorder of lung| AND (< 301867009 |Edema of trunk| AND
^ 700043003 |Example problem list concepts reference set| )
```

{% endcode %}

However, where a conjunction and disjunction are both used together, it is mandatory to use round brackets to disambiguate the meaning of the expression constraint. For example, the following expression constraint is ***not*** valid:

```
< 19829001 |Disorder of lung| AND < 301867009 |Edema of trunk| OR
^ 700043003 |Example problem list concepts reference set|
```

And must be expressed (depending on the intended meaning) as either:

```
(< 19829001 |Disorder of lung| AND < 301867009 |Edema of trunk| ) OR
^ 700043003 |Example problem list concepts reference set|
```

Or as:

```
< 19829001 |Disorder of lung| AND (< 301867009 |Edema of trunk| OR
^ 700043003 |Example problem list concepts reference set| )
```

## Attribute Conjunction and Disjunction <img src="https://3222256335-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsOJBD7YbxAy9bD1Ko9L9%2Fuploads%2Fgit-blob-fe66e95cce4239d6bed95749583c755fd072b1a3%2FScreenshot%202025-09-24%20at%2017.38.47.png?alt=media" alt="Included in ECL Core" data-size="line">

Conjunction and disjunction may be used within refinements in a variety of ways. The most common way of using these operators in a refinement is to define the conjunction or disjunction of individual attributes.

For example, the expression constraint below, in which the comma between the two attributes represents conjunction, is satisfied only by clinical findings which have *both* a finding site of pulmonary valve structure (or subtype) *and* an associated morphology of stenosis (or subtype).

{% code overflow="wrap" %}

```
< 404684003 |Clinical finding| :
  363698007 |Finding site| = << 39057004 |Pulmonary valve structure|,
  116676008 |Associated morphology| = << 415582006 |Stenosis|
```

{% endcode %}

This expression constraint can equivalently be expressed as:

{% code overflow="wrap" %}

```
< 404684003 |Clinical finding| :
  363698007 |Finding site| = << 39057004 |Pulmonary valve structure| AND
  116676008 |Associated morphology| = << 415582006 |Stenosis|
```

{% endcode %}

The following example uses the disjunction operator (OR) to represent the disjunction of two attributes. This constraint is satisfied only by clinical findings which have *either* an associated morphology of 'infarct' (or subtype) *or* are due to a myocardial infarction (or subtype).

{% code overflow="wrap" %}

```
< 404684003 |Clinical finding| :
  116676008 |Associated morphology| = << 55641003 |Infarct| OR
  42752001 |Due to| = << 22298006 |Myocardial infarction|
```

{% endcode %}

When more than one conjunction or more than one disjunction is used in a refinement, round brackets can be optionally applied. For example, the following expression constraints are all valid and equivalent to each other:

```
< 404684003 |Clinical finding| :
  363698007 |Finding site| = << 39057004 |Pulmonary valve structure| AND
  116676008 |Associated morphology| = << 415582006 |Stenosis| AND
  42752001 |Due to| = << 445238008 |Malignant carcinoid tumor|
```

```
< 404684003 |Clinical finding| :
  ( 363698007 |Finding site| = << 39057004 |Pulmonary valve structure| AND
  116676008 |Associated morphology| = << 415582006 |Stenosis| ) AND
  42752001 |Due to| = << 445238008 |Malignant carcinoid tumor|
```

```
< 404684003 |Clinical finding| :
  363698007 |Finding site| = << 39057004 |Pulmonary valve structure| AND
  ( 116676008 |Associated morphology| = << 415582006 |Stenosis| AND
  42752001 |Due to| = << 445238008 |Malignant carcinoid tumor| )
```

However, where a conjunction and disjunction are both used together in a refinement, it is mandatory to use brackets to disambiguate the meaning of the expression constraint.

For example, the following expression constraint is ***not*** valid:

```
< 404684003 |Clinical finding| :
  363698007 |Finding site| = << 39057004 |Pulmonary valve structure| AND
  116676008 |Associated morphology| = << 415582006 |Stenosis| OR
  42752001 |Due to| = << 445238008 |Malignant carcinoid tumor|
```

And must be expressed (depending on the intended meaning) as either:

```
< 404684003 |Clinical finding| :
  ( 363698007 |Finding site| = << 39057004 |Pulmonary valve structure| AND
  116676008 |Associated morphology| = << 415582006 |Stenosis| ) OR
  42752001 |Due to| = << 445238008 |Malignant carcinoid tumor|
```

Or as:

```
< 404684003 |Clinical finding| :
  363698007 |Finding site| = << 39057004 |Pulmonary valve structure| AND
  ( 116676008 |Associated morphology| = << 415582006 |Stenosis| OR
  42752001 |Due to| = << 445238008 |Malignant carcinoid tumor| )
```

## Attribute Group Conjunction and Disjunction

Similarly, conjunction and disjunction may be defined between attribute groups. The following expression constraint is satisfied only by clinical findings which *either* have a finding site of pulmonary valve structure (or subtype) and an associated morphology of stenosis (or subtype), *OR* have a finding site of right ventricular structure (or subtype) and an associated morphology of hypertrophy (or subtype).

```
< 404684003 |Clinical finding| :
  { 363698007 |Finding site| = << 39057004 |Pulmonary valve structure|,
  116676008 |Associated morphology| = << 415582006 |Stenosis| } OR
  { 363698007 |Finding site| = << 53085002 |Right ventricular structure|,
  116676008 |Associated morphology| = << 56246009 |Hypertrophy| }
```

## Attribute Value Conjunction and Disjunction <img src="https://3222256335-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsOJBD7YbxAy9bD1Ko9L9%2Fuploads%2Fgit-blob-fe66e95cce4239d6bed95749583c755fd072b1a3%2FScreenshot%202025-09-24%20at%2017.38.47.png?alt=media" alt="Included in ECL Core" data-size="line">

Conjunction and disjunction can also be applied to attribute values. The example below is satisfied only by members of the adverse drug reactions reference set for GP/FP health issue, which have a causative agent that is *either* a subtype of pharmaceutical / biologic product *or* a subtype of substance.

{% code overflow="wrap" %}

```
^ 450990004 |Adverse drug reactions reference set for GP/FP health issue| :
  246075003 |Causative agent| = (< 373873005 |Pharmaceutical / biologic product| OR < 105590001 |Substance| )
```

{% endcode %}

Similarly, attribute values can also use conjunction. The following expression constraint is satisfied only by clinical findings with an associated morphology whose value is *both* a subtype (or self) of ulcer *and* a subtype (or self) of hemorrhage.

```
< 404684003 |Clinical finding| : 116676008 |Associated morphology| =
  (<< 56208002 |Ulcer| AND << 50960005 |Hemorrhage| )
```

For more information about nested attribute values and nested compound expression constraints, please refer to [6.7-nested-expression-constraints](https://docs.snomed.org/snomed-ct-specifications/snomed-ct-expression-constraint-language/behaviour-specification-with-examples/6.7-nested-expression-constraints "mention").

<a href="https://docs.google.com/forms/d/e/1FAIpQLScTmbZIf0UEQwYDkY27EEWBkaiYkHSbR0_9DmFrMLXoQLyL7Q/viewform?usp=pp_url&#x26;entry.1767247133=ECL+Specification&#x26;entry.670899847=Conjunction%20and%20Disjunction" class="button primary">Provide Feedback</a>
