---
title: "ipss"
description: "An assessment score used to screen for, diagnose, and track symptoms of benign prostatic hyperplasia (BPH)."
---

An assessment score used to screen for, diagnose, and track symptoms of benign prostatic hyperplasia (BPH).

**Purpose.** To record the results for each component parameter and their total sum for the IPSS.

## Source

| Model | Leg | Role |
|---|---|---|
| `openEHR-EHR-OBSERVATION.ipss.v1` | 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. | — |
| `incomplete_emptying`<br />`incomplete_emptying_code`<br />`incomplete_emptying_system`<br />`incomplete_emptying_numeric`<br />`incomplete_emptying_valueset_id` | coded text<br />`text`, `text`, `text`, `numeric`, `text` | yes | Incomplete emptying | `/data[at0001]/events[at0002]/data[at0003]/items[at0004]` |
| `frequency`<br />`frequency_code`<br />`frequency_system`<br />`frequency_numeric`<br />`frequency_valueset_id` | coded text<br />`text`, `text`, `text`, `numeric`, `text` | yes | Frequency | `/data[at0001]/events[at0002]/data[at0003]/items[at0011]` |
| `intermittency`<br />`intermittency_code`<br />`intermittency_system`<br />`intermittency_numeric`<br />`intermittency_valueset_id` | coded text<br />`text`, `text`, `text`, `numeric`, `text` | yes | Intermittency | `/data[at0001]/events[at0002]/data[at0003]/items[at0012]` |
| `urgency`<br />`urgency_code`<br />`urgency_system`<br />`urgency_numeric`<br />`urgency_valueset_id` | coded text<br />`text`, `text`, `text`, `numeric`, `text` | yes | Urgency | `/data[at0001]/events[at0002]/data[at0003]/items[at0013]` |
| `weak_stream`<br />`weak_stream_code`<br />`weak_stream_system`<br />`weak_stream_numeric`<br />`weak_stream_valueset_id` | coded text<br />`text`, `text`, `text`, `numeric`, `text` | yes | Weak Stream | `/data[at0001]/events[at0002]/data[at0003]/items[at0014]` |
| `straining`<br />`straining_code`<br />`straining_system`<br />`straining_numeric`<br />`straining_valueset_id` | coded text<br />`text`, `text`, `text`, `numeric`, `text` | yes | Straining | `/data[at0001]/events[at0002]/data[at0003]/items[at0015]` |
| `nocturia`<br />`nocturia_code`<br />`nocturia_system`<br />`nocturia_numeric`<br />`nocturia_valueset_id` | coded text<br />`text`, `text`, `text`, `numeric`, `text` | yes | Nocturia | `/data[at0001]/events[at0002]/data[at0003]/items[at0016]` |
| `total_score_s` | `integer` | yes | Total score (S) | `/data[at0001]/events[at0002]/data[at0003]/items[at0023]` |
| `quality_of_life`<br />`quality_of_life_code`<br />`quality_of_life_system`<br />`quality_of_life_numeric`<br />`quality_of_life_valueset_id` | coded text<br />`text`, `text`, `text`, `numeric`, `text` | yes | Quality of life | `/data[at0001]/events[at0002]/data[at0003]/items[at0024]` |

## Constraints

```sql
check ((incomplete_emptying_code is null and incomplete_emptying_system is null and incomplete_emptying_numeric is null and incomplete_emptying is null) or (incomplete_emptying_valueset_id is not null and incomplete_emptying_code is not null and incomplete_emptying_system is not null and incomplete_emptying_numeric is not null and incomplete_emptying is not null))
check ((frequency_code is null and frequency_system is null and frequency_numeric is null and frequency is null) or (frequency_valueset_id is not null and frequency_code is not null and frequency_system is not null and frequency_numeric is not null and frequency is not null))
check ((intermittency_code is null and intermittency_system is null and intermittency_numeric is null and intermittency is null) or (intermittency_valueset_id is not null and intermittency_code is not null and intermittency_system is not null and intermittency_numeric is not null and intermittency is not null))
check ((urgency_code is null and urgency_system is null and urgency_numeric is null and urgency is null) or (urgency_valueset_id is not null and urgency_code is not null and urgency_system is not null and urgency_numeric is not null and urgency is not null))
check ((weak_stream_code is null and weak_stream_system is null and weak_stream_numeric is null and weak_stream is null) or (weak_stream_valueset_id is not null and weak_stream_code is not null and weak_stream_system is not null and weak_stream_numeric is not null and weak_stream is not null))
check ((straining_code is null and straining_system is null and straining_numeric is null and straining is null) or (straining_valueset_id is not null and straining_code is not null and straining_system is not null and straining_numeric is not null and straining is not null))
check ((nocturia_code is null and nocturia_system is null and nocturia_numeric is null and nocturia is null) or (nocturia_valueset_id is not null and nocturia_code is not null and nocturia_system is not null and nocturia_numeric is not null and nocturia is not null))
check (total_score_s is null or total_score_s between 0 and 35)
check ((quality_of_life_code is null and quality_of_life_system is null and quality_of_life_numeric is null and quality_of_life is null) or (quality_of_life_valueset_id is not null and quality_of_life_code is not null and quality_of_life_system is not null and quality_of_life_numeric is not null and quality_of_life 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 |
| `incomplete_emptying_valueset_id, incomplete_emptying_code, incomplete_emptying_system, incomplete_emptying, incomplete_emptying_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `frequency_valueset_id, frequency_code, frequency_system, frequency, frequency_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `intermittency_valueset_id, intermittency_code, intermittency_system, intermittency, intermittency_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `urgency_valueset_id, urgency_code, urgency_system, urgency, urgency_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `weak_stream_valueset_id, weak_stream_code, weak_stream_system, weak_stream, weak_stream_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `straining_valueset_id, straining_code, straining_system, straining, straining_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `nocturia_valueset_id, nocturia_code, nocturia_system, nocturia, nocturia_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `quality_of_life_valueset_id, quality_of_life_code, quality_of_life_system, quality_of_life, quality_of_life_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict |

## Indexes

- `ipss_form_id_idx` on `form_id`

## Value sets

| Value set | Codes |
|---|---|
| `org.openehr::openEHR-EHR-OBSERVATION.ipss.v1/frequency` | 6 |
| `org.openehr::openEHR-EHR-OBSERVATION.ipss.v1/incomplete_emptying` | 6 |
| `org.openehr::openEHR-EHR-OBSERVATION.ipss.v1/intermittency` | 6 |
| `org.openehr::openEHR-EHR-OBSERVATION.ipss.v1/nocturia` | 6 |
| `org.openehr::openEHR-EHR-OBSERVATION.ipss.v1/quality_of_life` | 7 |
| `org.openehr::openEHR-EHR-OBSERVATION.ipss.v1/straining` | 6 |
| `org.openehr::openEHR-EHR-OBSERVATION.ipss.v1/urgency` | 6 |
| `org.openehr::openEHR-EHR-OBSERVATION.ipss.v1/weak_stream` | 6 |

