---
title: "body_mass_index"
description: "Calculated measurement which compares a person's weight and height."
---

Calculated measurement which compares a person's weight and height.

**Purpose.** To record the Body Mass Index (BMI) of an individual.

## Source

| Model | Leg | Role |
|---|---|---|
| `openEHR-EHR-OBSERVATION.body_mass_index.v2` | 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. | — |
| `body_mass_index_magnitude`<br />`body_mass_index_units` | quantity<br />`numeric`, `text` | yes | Body mass index | `/data[at0001]/events[at0002]/data[at0003]/items[at0004]` |
| `clinical_interpretation`<br />`clinical_interpretation_code`<br />`clinical_interpretation_system`<br />`clinical_interpretation_valueset_id` | coded text<br />`text`, `text`, `text`, `text` | yes | Clinical interpretation | `/data[at0001]/events[at0002]/data[at0003]/items[at0013]` |
| `comment` | `text` | yes | Comment | `/data[at0001]/events[at0002]/data[at0003]/items[at0012]` |
| `confounding_factors` | `text` | yes | Confounding factors | `/data[at0001]/events[at0002]/state[at0014]/items[at0011]` |
| `method`<br />`method_code`<br />`method_system`<br />`method_valueset_id` | coded text<br />`text`, `text`, `text`, `text` | yes | Method | `/protocol[at0005]/items[at0006]` |
| `formula` | `text` | yes | Formula | `/protocol[at0005]/items[at0010]` |

## Constraints

```sql
check ((body_mass_index_magnitude is null and body_mass_index_units is null) or (body_mass_index_magnitude is not null and body_mass_index_units is not null))
check (body_mass_index_magnitude is null or (body_mass_index_units = 'kg/m2' and body_mass_index_magnitude between 0 and 1000) or (body_mass_index_units = '[lb_av]/[in_i]2' and body_mass_index_magnitude between 0 and 1000))
check ((clinical_interpretation_code is null and clinical_interpretation_system is null and clinical_interpretation_valueset_id is null) or (clinical_interpretation is not null and clinical_interpretation_code is not null and clinical_interpretation_system is not null and clinical_interpretation_valueset_id is not null))
check ((method_code is null and method_system is null and method_valueset_id is null and method is null) or (method is not null and method_code is not null and method_system is not null and method_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 |
| `clinical_interpretation_valueset_id, clinical_interpretation_code, clinical_interpretation_system, clinical_interpretation` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `method_valueset_id, method_code, method_system, method` | [`valueset_code`](/docs/tables/valueset_code) | restrict |

## Indexes

- `body_mass_index_form_id_idx` on `form_id`

## Value sets

| Value set | Codes |
|---|---|
| `org.openehr::openEHR-EHR-OBSERVATION.body_mass_index.v2/method` | 2 |

