---
title: "body_temperature"
description: "A measurement of the body temperature, which is a surrogate for the core body temperature of the individual."
---

A measurement of the body temperature, which is a surrogate for the core body temperature of the individual.

**Purpose.** To record the measured temperature of a person - as a surrogate for the core body temperature.

## Source

| Model | Leg | Role |
|---|---|---|
| `openEHR-EHR-OBSERVATION.body_temperature.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. | — |
| `temperature_magnitude`<br />`temperature_units` | quantity<br />`numeric`, `text` | yes | Temperature | `/data[at0002]/events[at0003]/data[at0001]/items[at0004]` |
| `comment` | `text` | yes | Comment | `/data[at0002]/events[at0003]/data[at0001]/items[at0063]` |
| `body_exposure`<br />`body_exposure_code`<br />`body_exposure_system`<br />`body_exposure_valueset_id` | coded text<br />`text`, `text`, `text`, `text` | yes | Body exposure | `/data[at0002]/events[at0003]/state[at0029]/items[at0030]` |
| `description_of_thermal_stress` | `text` | yes | Description of thermal stress | `/data[at0002]/events[at0003]/state[at0029]/items[at0041]` |
| `day_of_menstrual_cycle` | `integer` | yes | Day of menstrual cycle | `/data[at0002]/events[at0003]/state[at0029]/items[at0065]` |
| `confounding_factors` | `text` | yes | Confounding factors | `/data[at0002]/events[at0003]/state[at0029]/items[at0066]` |
| `location_of_measurement`<br />`location_of_measurement_code`<br />`location_of_measurement_system`<br />`location_of_measurement_valueset_id` | coded text<br />`text`, `text`, `text`, `text` | yes | Location of measurement | `/protocol[at0020]/items[at0021]` |
| `device` | `uuid` | yes | Device | `/protocol[at0020]/items[at0059]` |

## Constraints

```sql
check ((temperature_magnitude is null and temperature_units is null) or (temperature_magnitude is not null and temperature_units is not null))
check (temperature_magnitude is null or (temperature_units = 'Cel' and temperature_magnitude between 0 and 100) or (temperature_units = '[degF]' and temperature_magnitude between 30 and 200))
check ((body_exposure_code is null and body_exposure_system is null and body_exposure_valueset_id is null) or (body_exposure is not null and body_exposure_code is not null and body_exposure_system is not null and body_exposure_valueset_id is not null))
check (day_of_menstrual_cycle is null or day_of_menstrual_cycle >= 1)
check ((location_of_measurement_code is null and location_of_measurement_system is null and location_of_measurement_valueset_id is null) or (location_of_measurement is not null and location_of_measurement_code is not null and location_of_measurement_system is not null and location_of_measurement_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 |
| `body_exposure_valueset_id, body_exposure_code, body_exposure_system, body_exposure` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `location_of_measurement_valueset_id, location_of_measurement_code, location_of_measurement_system, location_of_measurement` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `device` | [`device`](/docs/tables/device) | no action |

## Referenced by

- [`body_temperature_structured_measurement_location`](/docs/tables/body_temperature_structured_measurement_location) via `body_temperature_id`

## Indexes

- `body_temperature_form_id_idx` on `form_id`
- `body_temperature_device_idx` on `device`

## Child tables

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

### `body_temperature_structured_measurement_location`

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

| Column | Type | Null | Description | Source |
|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — |
| `body_temperature_id` | `uuid` → [`body_temperature`](/docs/tables/body_temperature) | no | — | — |
| `position` | `integer` | no | Order of this row within its parent, from zero. | — |
| `anatomical_location_id` | `uuid` | no | Structured measurement location | `/protocol[at0020]/items[at0064]` |

#### Unique

- `body_temperature_id, position`
- `body_temperature_id, anatomical_location_id`

#### References

| Columns | Target | On delete |
|---|---|---|
| `body_temperature_id` | [`body_temperature`](/docs/tables/body_temperature) | cascade |
| `anatomical_location_id` | [`anatomical_location`](/docs/tables/anatomical_location) | no action |

#### Indexes

- `body_temperature_structured_measurement_location_anatomi_55ef2f` on `anatomical_location_id`

## Value sets

| Value set | Codes |
|---|---|
| `org.openehr::openEHR-EHR-OBSERVATION.body_temperature.v2/body_exposure` | 4 |
| `org.openehr::openEHR-EHR-OBSERVATION.body_temperature.v2/location_of_measurement` | 13 |

