---
title: "functional_ability"
description: "An assessment of an individual’s ability to perform an activity safely and consistently without human assistance."
---

An assessment of an individual’s ability to perform an activity safely and consistently without human assistance.

**Purpose.** To record an assessment of an individual’s ability to independently perform a single identified activity at a point in time.

## Source

| Model | Leg | Role |
|---|---|---|
| `openEHR-EHR-OBSERVATION.functional_ability.v0` | openEHR | defines this table |

## Columns

| Column | Type | Null | Description | Source |
|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — |
| `form_id` | `uuid` → [`form`](/docs/tables/form) | no | The form this entry was recorded on. | — |
| `form_block_id` | `uuid` | yes | The block within the form, when the entry is bound to one. | — |
| `activity_name`<br />`activity_name_code`<br />`activity_name_system`<br />`activity_name_valueset_id` | coded text<br />`text`, `text`, `text`, `text` | yes | Activity name | `/data[at0001]/events[at0002]/data[at0003]/items[at0004]` |
| `ability`<br />`ability_code`<br />`ability_system`<br />`ability_valueset_id` | coded text<br />`text`, `text`, `text`, `text` | yes | Ability | `/data[at0001]/events[at0002]/data[at0003]/items[at0005]` |
| `clinical_description` | `text` | yes | Clinical description | `/data[at0001]/events[at0002]/data[at0003]/items[at0006]` |
| `difficulty`<br />`difficulty_code`<br />`difficulty_system`<br />`difficulty_valueset_id` | coded text<br />`text`, `text`, `text`, `text` | yes | Difficulty | `/data[at0001]/events[at0002]/data[at0003]/items[at0007]` |
| `reason_for_difficulty` | `text` | yes | Reason for difficulty | `/data[at0001]/events[at0002]/data[at0003]/items[at0008]` |
| `comment` | `text` | yes | Comment | `/data[at0001]/events[at0002]/data[at0003]/items[at0010]` |
| `assessment_conditions_description` | `text` | yes | Assessment conditions description | `/data[at0001]/events[at0002]/state[at0013]/items[at0014]` |
| `assistive_devices_description` | `text` | yes | Assistive devices description | `/data[at0001]/events[at0002]/state[at0013]/items[at0029]` |
| `confounding_factors` | `text` | yes | Confounding factors | `/data[at0001]/events[at0002]/state[at0013]/items[at0030]` |

## Constraints

```sql
check ((activity_name_code is null and activity_name_system is null and activity_name_valueset_id is null) or (activity_name is not null and activity_name_code is not null and activity_name_system is not null and activity_name_valueset_id is not null))
check ((ability_code is null and ability_system is null and ability_valueset_id is null) or (ability is not null and ability_code is not null and ability_system is not null and ability_valueset_id is not null))
check ((difficulty_code is null and difficulty_system is null and difficulty_valueset_id is null) or (difficulty is not null and difficulty_code is not null and difficulty_system is not null and difficulty_valueset_id is not null))
```

## Unique

- `form_block_id`

## References

| Columns | Target | On delete |
|---|---|---|
| `form_id` | [`form`](/docs/tables/form) | cascade |
| `form_id, form_block_id` | [`form_block`](/docs/tables/form_block) | cascade |
| `activity_name_valueset_id, activity_name_code, activity_name_system, activity_name` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `ability_valueset_id, ability_code, ability_system, ability` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `difficulty_valueset_id, difficulty_code, difficulty_system, difficulty` | [`valueset_code`](/docs/tables/valueset_code) | restrict |

## Referenced by

- [`functional_ability_assistive_device`](/docs/tables/functional_ability_assistive_device) via `functional_ability_id`

## Indexes

- `functional_ability_form_id_idx` on `form_id`

## Child tables

1 table hang off `functional_ability`, one row per repetition.

### `functional_ability_assistive_device`

Child table — one row per repetition, deleted with its parent.

| Column | Type | Null | Description | Source |
|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — |
| `functional_ability_id` | `uuid` → [`functional_ability`](/docs/tables/functional_ability) | no | — | — |
| `position` | `integer` | no | Order of this row within its parent, from zero. | — |
| `device_id` | `uuid` | no | Assistive device | `/data[at0001]/events[at0002]/state[at0013]/items[at0015]` |

#### Unique

- `functional_ability_id, position`
- `functional_ability_id, device_id`

#### References

| Columns | Target | On delete |
|---|---|---|
| `functional_ability_id` | [`functional_ability`](/docs/tables/functional_ability) | cascade |
| `device_id` | [`device`](/docs/tables/device) | no action |

#### Indexes

- `functional_ability_assistive_device_device_id_idx` on `device_id`

## Value sets

| Value set | Codes |
|---|---|
| `org.openehr::openEHR-EHR-OBSERVATION.functional_ability.v0/ability` | 3 |
| `org.openehr::openEHR-EHR-OBSERVATION.functional_ability.v0/difficulty` | 4 |

