---
title: "symptom_sign"
description: "Reported observation of a physical or mental disturbance in an individual."
---
Reported observation of a physical or mental disturbance in an individual.
**Purpose.** To record details about a single episode of a reported symptom or sign including context, but not details, of previous episodes if appropriate.
## Source
| Model | Leg | Role |
|---|---|---|
| `openEHR-EHR-CLUSTER.symptom_sign.v2` | openEHR | defines this table |
## Columns
| Column | Type | Null | Description | Source |
|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — |
| `symptom_sign_name`
`symptom_sign_name_code`
`symptom_sign_name_system`
`symptom_sign_name_valueset_id` | coded text
`text`, `text`, `text`, `text` | yes | Symptom/Sign name | `/items[at0001]` |
| `body_site` | `text` | yes | Body site | `/items[at0151]` |
| `description` | `text` | yes | Description | `/items[at0002]` |
| `episodicity`
`episodicity_code`
`episodicity_system`
`episodicity_valueset_id` | coded text
`text`, `text`, `text`, `text` | yes | Episodicity | `/items[at0175]` |
| `occurrence`
`occurrence_code`
`occurrence_system`
`occurrence_valueset_id` | coded text
`text`, `text`, `text`, `text` | yes | Occurrence | `/items[at0186]` |
| `episode_onset` | `timestamptz` | yes | Episode onset | `/items[at0152]` |
| `onset_timing` | `interval` | yes | Onset timing | `/items[at0164]` |
| `nadir` | `timestamptz` | yes | Nadir | `/items[at0200]` |
| `episode_duration` | `interval` | yes | Episode duration | `/items[at0028]` |
| `severity_category`
`severity_category_code`
`severity_category_system`
`severity_category_valueset_id` | coded text
`text`, `text`, `text`, `text` | yes | Severity category | `/items[at0021]` |
| `character`
`character_code`
`character_system`
`character_valueset_id` | coded text
`text`, `text`, `text`, `text` | yes | Character | `/items[at0189]` |
| `progression`
`progression_code`
`progression_system`
`progression_valueset_id` | coded text
`text`, `text`, `text`, `text` | yes | Progression | `/items[at0180]` |
| `pattern` | `text` | yes | Pattern | `/items[at0003]` |
| `impact` | `text` | yes | Impact | `/items[at0155]` |
| `episode_description` | `text` | yes | Episode description | `/items[at0037]` |
| `resolution_date_time` | `timestamptz` | yes | Resolution date/time | `/items[at0161]` |
| `description_of_previous_episodes` | `text` | yes | Description of previous episodes | `/items[at0057]` |
| `number_of_previous_episodes` | `integer` | yes | Number of previous episodes | `/items[at0031]` |
| `comment` | `text` | yes | Comment | `/items[at0163]` |
## Constraints
```sql
check ((symptom_sign_name_code is null and symptom_sign_name_system is null and symptom_sign_name_valueset_id is null) or (symptom_sign_name is not null and symptom_sign_name_code is not null and symptom_sign_name_system is not null and symptom_sign_name_valueset_id is not null))
check ((episodicity_code is null and episodicity_system is null and episodicity_valueset_id is null and episodicity is null) or (episodicity is not null and episodicity_code is not null and episodicity_system is not null and episodicity_valueset_id is not null))
check ((occurrence_code is null and occurrence_system is null and occurrence_valueset_id is null and occurrence is null) or (occurrence is not null and occurrence_code is not null and occurrence_system is not null and occurrence_valueset_id is not null))
check ((severity_category_code is null and severity_category_system is null and severity_category_valueset_id is null) or (severity_category is not null and severity_category_code is not null and severity_category_system is not null and severity_category_valueset_id is not null))
check ((character_code is null and character_system is null and character_valueset_id is null) or (character is not null and character_code is not null and character_system is not null and character_valueset_id is not null))
check ((progression_code is null and progression_system is null and progression_valueset_id is null) or (progression is not null and progression_code is not null and progression_system is not null and progression_valueset_id is not null))
check (number_of_previous_episodes is null or number_of_previous_episodes >= 0)
```
## References
| Columns | Target | On delete |
|---|---|---|
| `symptom_sign_name_valueset_id, symptom_sign_name_code, symptom_sign_name_system, symptom_sign_name` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `episodicity_valueset_id, episodicity_code, episodicity_system, episodicity` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `occurrence_valueset_id, occurrence_code, occurrence_system, occurrence` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `severity_category_valueset_id, severity_category_code, severity_category_system, severity_category` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `character_valueset_id, character_code, character_system, character` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `progression_valueset_id, progression_code, progression_system, progression` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
## Referenced by
- [`adverse_reaction_event_reaction_details`](/docs/tables/adverse_reaction_event_reaction_details) via `symptom_sign_id`
- [`story_structured_detail`](/docs/tables/story_structured_detail) via `symptom_sign_id`
- [`symptom_sign_structured_body_site`](/docs/tables/symptom_sign_structured_body_site) via `symptom_sign_id`
- [`symptom_sign_modifying_factor`](/docs/tables/symptom_sign_modifying_factor) via `symptom_sign_id`
- [`symptom_sign_modifying_factor`](/docs/tables/symptom_sign_modifying_factor) via `factor_detail`
- [`symptom_sign_precipitating_factor`](/docs/tables/symptom_sign_precipitating_factor) via `symptom_sign_id`
- [`symptom_sign_precipitating_factor_factor_detail`](/docs/tables/symptom_sign_precipitating_factor_factor_detail) via `symptom_sign_id`
- [`symptom_sign_resolving_factor`](/docs/tables/symptom_sign_resolving_factor) via `symptom_sign_id`
- [`symptom_sign_resolving_factor_factor_detail`](/docs/tables/symptom_sign_resolving_factor_factor_detail) via `symptom_sign_id`
- [`symptom_sign_previous_episodes`](/docs/tables/symptom_sign_previous_episodes) via `symptom_sign_id`
- [`symptom_sign_previous_episodes`](/docs/tables/symptom_sign_previous_episodes) via `previous_episodes_id`
- [`symptom_sign_associated_symptom_sign`](/docs/tables/symptom_sign_associated_symptom_sign) via `symptom_sign_id`
- [`symptom_sign_associated_symptom_sign`](/docs/tables/symptom_sign_associated_symptom_sign) via `associated_symptom_sign_id`
- [`symptom_sign_screening_specific_symptom_sign_additional_details`](/docs/tables/symptom_sign_screening_specific_symptom_sign_additional_details) via `symptom_sign_id`
## Child tables
8 tables hang off `symptom_sign`, one row per repetition.
### `symptom_sign_structured_body_site`
Child table — one row per repetition, deleted with its parent.
| Column | Type | Null | Description | Source |
|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — |
| `symptom_sign_id` | `uuid` → [`symptom_sign`](/docs/tables/symptom_sign) | no | — | — |
| `position` | `integer` | no | Order of this row within its parent, from zero. | — |
| `anatomical_location_id` | `uuid` | yes | — | — |
| `anatomical_location_circle_id` | `uuid` | yes | — | — |
| `anatomical_location_relative_id` | `uuid` | yes | — | — |
#### Constraints
```sql
check (num_nonnulls(anatomical_location_id, anatomical_location_circle_id, anatomical_location_relative_id) = 1)
```
#### Unique
- `symptom_sign_id, position`
#### References
| Columns | Target | On delete |
|---|---|---|
| `symptom_sign_id` | [`symptom_sign`](/docs/tables/symptom_sign) | cascade |
| `anatomical_location_id` | [`anatomical_location`](/docs/tables/anatomical_location) | no action |
| `anatomical_location_circle_id` | [`anatomical_location_circle`](/docs/tables/anatomical_location_circle) | no action |
| `anatomical_location_relative_id` | [`anatomical_location_relative`](/docs/tables/anatomical_location_relative) | no action |
#### Indexes
- `symptom_sign_structured_body_site_anatomical_location_id_idx` on `anatomical_location_id`
- `symptom_sign_structured_body_site_anatomical_location_ci_06b18b` on `anatomical_location_circle_id`
- `symptom_sign_structured_body_site_anatomical_location_re_23c3a3` on `anatomical_location_relative_id`
### `symptom_sign_modifying_factor`
Child table — one row per repetition, deleted with its parent.
| Column | Type | Null | Description | Source |
|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — |
| `symptom_sign_id` | `uuid` → [`symptom_sign`](/docs/tables/symptom_sign) | no | — | — |
| `position` | `integer` | no | Order of this row within its parent, from zero. | — |
| `factor` | `text` | yes | Factor | `/items[at0018]/items[at0019]` |
| `factor_detail` | `uuid` | yes | Factor detail | `/items[at0018]/items[at0197]` |
| `effect`
`effect_code`
`effect_system`
`effect_valueset_id` | coded text
`text`, `text`, `text`, `text` | yes | Effect | `/items[at0018]/items[at0017]` |
| `description` | `text` | yes | Description | `/items[at0018]/items[at0056]` |
#### Constraints
```sql
check ((effect_code is null and effect_system is null and effect_valueset_id is null and effect is null) or (effect is not null and effect_code is not null and effect_system is not null and effect_valueset_id is not null))
```
#### Unique
- `symptom_sign_id, position`
#### References
| Columns | Target | On delete |
|---|---|---|
| `symptom_sign_id` | [`symptom_sign`](/docs/tables/symptom_sign) | cascade |
| `effect_valueset_id, effect_code, effect_system, effect` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `factor_detail` | [`symptom_sign`](/docs/tables/symptom_sign) | no action |
#### Indexes
- `symptom_sign_modifying_factor_factor_detail_idx` on `factor_detail`
### `symptom_sign_precipitating_factor`
Child table — one row per repetition, deleted with its parent.
| Column | Type | Null | Description | Source |
|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — |
| `symptom_sign_id` | `uuid` → [`symptom_sign`](/docs/tables/symptom_sign) | no | — | — |
| `position` | `integer` | no | Order of this row within its parent, from zero. | — |
| `factor` | `text` | yes | Factor | `/items[at0165]/items[at0170]` |
| `time_interval` | `interval` | yes | Time interval | `/items[at0165]/items[at0171]` |
| `description` | `text` | yes | Description | `/items[at0165]/items[at0185]` |
#### Unique
- `symptom_sign_id, position`
#### References
| Columns | Target | On delete |
|---|---|---|
| `symptom_sign_id` | [`symptom_sign`](/docs/tables/symptom_sign) | cascade |
### Referenced by
- [`symptom_sign_precipitating_factor_factor_detail`](/docs/tables/symptom_sign_precipitating_factor_factor_detail) via `symptom_sign_precipitating_factor_id`
### `symptom_sign_precipitating_factor_factor_detail`
Child table — one row per repetition, deleted with its parent.
| Column | Type | Null | Description | Source |
|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — |
| `symptom_sign_precipitating_factor_id` | `uuid` → [`symptom_sign_precipitating_factor`](/docs/tables/symptom_sign_precipitating_factor) | no | — | — |
| `position` | `integer` | no | Order of this row within its parent, from zero. | — |
| `symptom_sign_id` | `uuid` | no | Factor detail | `/items[at0165]/items[at0154]` |
#### Unique
- `symptom_sign_precipitating_factor_id, position`
- `symptom_sign_precipitating_factor_id, symptom_sign_id`
#### References
| Columns | Target | On delete |
|---|---|---|
| `symptom_sign_precipitating_factor_id` | [`symptom_sign_precipitating_factor`](/docs/tables/symptom_sign_precipitating_factor) | cascade |
| `symptom_sign_id` | [`symptom_sign`](/docs/tables/symptom_sign) | no action |
#### Indexes
- `symptom_sign_precipitating_factor_factor_detail_symptom__45488d` on `symptom_sign_id`
### `symptom_sign_resolving_factor`
Child table — one row per repetition, deleted with its parent.
| Column | Type | Null | Description | Source |
|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — |
| `symptom_sign_id` | `uuid` → [`symptom_sign`](/docs/tables/symptom_sign) | no | — | — |
| `position` | `integer` | no | Order of this row within its parent, from zero. | — |
| `factor` | `text` | yes | Factor | `/items[at0190]/items[at0193]` |
| `time_interval` | `interval` | yes | Time interval | `/items[at0190]/items[at0195]` |
| `description` | `text` | yes | Description | `/items[at0190]/items[at0196]` |
#### Unique
- `symptom_sign_id, position`
#### References
| Columns | Target | On delete |
|---|---|---|
| `symptom_sign_id` | [`symptom_sign`](/docs/tables/symptom_sign) | cascade |
### Referenced by
- [`symptom_sign_resolving_factor_factor_detail`](/docs/tables/symptom_sign_resolving_factor_factor_detail) via `symptom_sign_resolving_factor_id`
### `symptom_sign_resolving_factor_factor_detail`
Child table — one row per repetition, deleted with its parent.
| Column | Type | Null | Description | Source |
|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — |
| `symptom_sign_resolving_factor_id` | `uuid` → [`symptom_sign_resolving_factor`](/docs/tables/symptom_sign_resolving_factor) | no | — | — |
| `position` | `integer` | no | Order of this row within its parent, from zero. | — |
| `symptom_sign_id` | `uuid` | no | Factor detail | `/items[at0190]/items[at0194]` |
#### Unique
- `symptom_sign_resolving_factor_id, position`
- `symptom_sign_resolving_factor_id, symptom_sign_id`
#### References
| Columns | Target | On delete |
|---|---|---|
| `symptom_sign_resolving_factor_id` | [`symptom_sign_resolving_factor`](/docs/tables/symptom_sign_resolving_factor) | cascade |
| `symptom_sign_id` | [`symptom_sign`](/docs/tables/symptom_sign) | no action |
#### Indexes
- `symptom_sign_resolving_factor_factor_detail_symptom_sign_id_idx` on `symptom_sign_id`
### `symptom_sign_previous_episodes`
Child table — one row per repetition, deleted with its parent.
| Column | Type | Null | Description | Source |
|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — |
| `symptom_sign_id` | `uuid` → [`symptom_sign`](/docs/tables/symptom_sign) | no | — | — |
| `position` | `integer` | no | Order of this row within its parent, from zero. | — |
| `previous_episodes_id` | `uuid` | no | Previous episodes | `/items[at0146]` |
#### Unique
- `symptom_sign_id, position`
- `symptom_sign_id, previous_episodes_id`
#### References
| Columns | Target | On delete |
|---|---|---|
| `symptom_sign_id` | [`symptom_sign`](/docs/tables/symptom_sign) | cascade |
| `previous_episodes_id` | [`symptom_sign`](/docs/tables/symptom_sign) | no action |
#### Indexes
- `symptom_sign_previous_episodes_previous_episodes_id_idx` on `previous_episodes_id`
### `symptom_sign_associated_symptom_sign`
Child table — one row per repetition, deleted with its parent.
| Column | Type | Null | Description | Source |
|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — |
| `symptom_sign_id` | `uuid` → [`symptom_sign`](/docs/tables/symptom_sign) | no | — | — |
| `position` | `integer` | no | Order of this row within its parent, from zero. | — |
| `associated_symptom_sign_id` | `uuid` | no | Associated symptom/sign | `/items[at0063]` |
#### Unique
- `symptom_sign_id, position`
- `symptom_sign_id, associated_symptom_sign_id`
#### References
| Columns | Target | On delete |
|---|---|---|
| `symptom_sign_id` | [`symptom_sign`](/docs/tables/symptom_sign) | cascade |
| `associated_symptom_sign_id` | [`symptom_sign`](/docs/tables/symptom_sign) | no action |
#### Indexes
- `symptom_sign_associated_symptom_sign_associated_symptom__ded20f` on `associated_symptom_sign_id`
## Value sets
| Value set | Codes |
|---|---|
| `org.openehr::openEHR-EHR-CLUSTER.symptom_sign.v2/effect` | 3 |
| `org.openehr::openEHR-EHR-CLUSTER.symptom_sign.v2/episodicity` | 3 |
| `org.openehr::openEHR-EHR-CLUSTER.symptom_sign.v2/occurrence` | 2 |
| `org.openehr::openEHR-EHR-CLUSTER.symptom_sign.v2/progression` | 4 |
| `org.openehr::openEHR-EHR-CLUSTER.symptom_sign.v2/severity_category` | 3 |