---
title: "service"
description: "A simple health-related service or activity delivered by a clinician, organisation or agency."
---

A simple health-related service or activity delivered by a clinician, organisation or agency.

**Purpose.** To record details about a simple health-related service or activity delivered by a clinician, organisation or agency.

## Source

| Model | Leg | Role |
|---|---|---|
| `openEHR-EHR-ACTION.service.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. | — |
| `service_name`<br />`service_name_code`<br />`service_name_system`<br />`service_name_valueset_id` | coded text<br />`text`, `text`, `text`, `text` | yes | Service name | `/description[at0001]/items[at0011]` |
| `service_type`<br />`service_type_code`<br />`service_type_system`<br />`service_type_valueset_id` | coded text<br />`text`, `text`, `text`, `text` | yes | Service type | `/description[at0001]/items[at0014]` |
| `description` | `text` | yes | Description | `/description[at0001]/items[at0013]` |
| `planned_date_time` | `timestamptz` | yes | Planned date/time | `/description[at0001]/items[at0032]` |
| `scheduled_date_time` | `timestamptz` | yes | Scheduled date/time | `/description[at0001]/items[at0025]` |
| `sequence` | `integer` | yes | Sequence | `/description[at0001]/items[at0021]` |
| `reason` | `text` | yes | Reason | `/description[at0001]/items[at0012]` |
| `comment` | `text` | yes | Comment | `/description[at0001]/items[at0028]` |
| `requestor_identifier_value`<br />`requestor_identifier_system` | text, text<br />`text`, `text` | yes | Requestor identifier | `/protocol[at0015]/items[at0016]` |
| `service_provider_identifier_value`<br />`service_provider_identifier_system` | text, text<br />`text`, `text` | yes | Service provider identifier | `/protocol[at0015]/items[at0018]` |

## Constraints

```sql
check ((service_name_code is null and service_name_system is null and service_name_valueset_id is null) or (service_name is not null and service_name_code is not null and service_name_system is not null and service_name_valueset_id is not null))
check ((service_type_code is null and service_type_system is null and service_type_valueset_id is null) or (service_type is not null and service_type_code is not null and service_type_system is not null and service_type_valueset_id is not null))
check (sequence is null or sequence >= 1)
check (requestor_identifier_system is null or requestor_identifier_value is not null)
check (service_provider_identifier_system is null or service_provider_identifier_value 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 |
| `service_name_valueset_id, service_name_code, service_name_system, service_name` | [`valueset_code`](/docs/tables/valueset_code) | restrict |
| `service_type_valueset_id, service_type_code, service_type_system, service_type` | [`valueset_code`](/docs/tables/valueset_code) | restrict |

## Referenced by

- [`service_multimedia_representation`](/docs/tables/service_multimedia_representation) via `service_id`
- [`service_requestor`](/docs/tables/service_requestor) via `service_id`
- [`service_receiver`](/docs/tables/service_receiver) via `service_id`

## Indexes

- `service_form_id_idx` on `form_id`

## Child tables

3 tables hang off `service`, one row per repetition.

### `service_multimedia_representation`

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

| Column | Type | Null | Description | Source |
|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — |
| `service_id` | `uuid` → [`service`](/docs/tables/service) | no | — | — |
| `position` | `integer` | no | Order of this row within its parent, from zero. | — |
| `attachment_id` | `uuid` | no | Multimedia representation | `/description[at0001]/items[at0029]` |

#### Unique

- `service_id, position`
- `service_id, attachment_id`

#### References

| Columns | Target | On delete |
|---|---|---|
| `service_id` | [`service`](/docs/tables/service) | cascade |
| `attachment_id` | [`attachment`](/docs/tables/attachment) | restrict |

#### Indexes

- `service_multimedia_representation_attachment_id_idx` on `attachment_id`

### `service_requestor`

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

| Column | Type | Null | Description | Source |
|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — |
| `service_id` | `uuid` → [`service`](/docs/tables/service) | no | — | — |
| `position` | `integer` | no | Order of this row within its parent, from zero. | — |
| `organization_id` | `uuid` | yes | — | — |
| `person_id` | `uuid` | yes | — | — |

#### Constraints

```sql
check (num_nonnulls(organization_id, person_id) = 1)
```

#### Unique

- `service_id, position`

#### References

| Columns | Target | On delete |
|---|---|---|
| `service_id` | [`service`](/docs/tables/service) | cascade |
| `organization_id` | [`organization`](/docs/tables/organization) | no action |
| `person_id` | [`person`](/docs/tables/person) | no action |

#### Indexes

- `service_requestor_organization_id_idx` on `organization_id`
- `service_requestor_person_id_idx` on `person_id`

### `service_receiver`

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

| Column | Type | Null | Description | Source |
|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — |
| `service_id` | `uuid` → [`service`](/docs/tables/service) | no | — | — |
| `position` | `integer` | no | Order of this row within its parent, from zero. | — |
| `organization_id` | `uuid` | yes | — | — |
| `person_id` | `uuid` | yes | — | — |

#### Constraints

```sql
check (num_nonnulls(organization_id, person_id) = 1)
```

#### Unique

- `service_id, position`

#### References

| Columns | Target | On delete |
|---|---|---|
| `service_id` | [`service`](/docs/tables/service) | cascade |
| `organization_id` | [`organization`](/docs/tables/organization) | no action |
| `person_id` | [`person`](/docs/tables/person) | no action |

#### Indexes

- `service_receiver_organization_id_idx` on `organization_id`
- `service_receiver_person_id_idx` on `person_id`

