--- title: "service_direction" description: "Structured details of a complex direction for an ordered or requested service." --- Structured details of a complex direction for an ordered or requested service. **Purpose.** To record structured details of a complex direction for an ordered or requested service. ## Source | Model | Leg | Role | |---|---|---| | `openEHR-EHR-CLUSTER.service_direction.v1` | openEHR | defines this table | ## Columns | Column | Type | Null | Description | Source | |---|---|---|---|---| | `id` | `uuid primary key` | no | Primary key. | — | | `direction_sequence` | `integer` | yes | Direction sequence | `/items[at0001]` | | `direction_description` | `text` | yes | Direction description | `/items[at0002]` | | `direction_duration_coded_text`
`direction_duration_coded_text_code`
`direction_duration_coded_text_system`
`direction_duration_coded_text_valueset_id`
`direction_duration_duration` | coded text
`text`, `text`, `text`, `text`, `interval` | yes | Direction duration | `/items[at0007]` | | `total_amount_count`
`total_amount_duration` | integer, interval
`integer`, `interval` | yes | Total amount | `/items[at0011]` | ## Constraints ```sql check (direction_sequence is null or direction_sequence >= 1) check ((direction_duration_coded_text_code is null and direction_duration_coded_text_system is null and direction_duration_coded_text_valueset_id is null) or (direction_duration_coded_text is not null and direction_duration_coded_text_code is not null and direction_duration_coded_text_system is not null and direction_duration_coded_text_valueset_id is not null)) check (num_nonnulls(direction_duration_coded_text, direction_duration_duration) <= 1) check (total_amount_count is null or total_amount_count >= 1) check (num_nonnulls(total_amount_count, total_amount_duration) <= 1) ``` ## References | Columns | Target | On delete | |---|---|---| | `direction_duration_coded_text_valueset_id, direction_duration_coded_text_code, direction_duration_coded_text_system, direction_duration_coded_text` | [`valueset_code`](/docs/tables/valueset_code) | restrict | ## Referenced by - [`service_direction_activity`](/docs/tables/service_direction_activity) via `service_direction_id` - [`service_direction_repetition_timing`](/docs/tables/service_direction_repetition_timing) via `service_direction_id` - [`service_request_complex_timing`](/docs/tables/service_request_complex_timing) via `service_direction_id` ## Child tables 3 tables hang off `service_direction`, one row per repetition. ### `service_direction_activity` Child table — one row per repetition, deleted with its parent. | Column | Type | Null | Description | Source | |---|---|---|---|---| | `id` | `uuid primary key` | no | Primary key. | — | | `service_direction_id` | `uuid` → [`service_direction`](/docs/tables/service_direction) | no | — | — | | `position` | `integer` | no | Order of this row within its parent, from zero. | — | | `activity_sequence` | `integer` | yes | Activity sequence | `/items[at0003]/items[at0004]` | | `amount_count`
`amount_duration` | integer, interval
`integer`, `interval` | yes | Amount | `/items[at0003]/items[at0005]` | #### Constraints ```sql check (activity_sequence is null or activity_sequence >= 1) check (amount_count is null or amount_count >= 1) check (num_nonnulls(amount_count, amount_duration) <= 1) ``` #### Unique - `service_direction_id, position` #### References | Columns | Target | On delete | |---|---|---| | `service_direction_id` | [`service_direction`](/docs/tables/service_direction) | cascade | ### Referenced by - [`service_direction_activity_intraday_timing`](/docs/tables/service_direction_activity_intraday_timing) via `service_direction_activity_id` ### `service_direction_activity_intraday_timing` Child table — one row per repetition, deleted with its parent. | Column | Type | Null | Description | Source | |---|---|---|---|---| | `id` | `uuid primary key` | no | Primary key. | — | | `service_direction_activity_id` | `uuid` → [`service_direction_activity`](/docs/tables/service_direction_activity) | no | — | — | | `position` | `integer` | no | Order of this row within its parent, from zero. | — | | `timing_daily_id` | `uuid` | no | Intraday timing | `/items[at0003]/items[at0006]` | #### Unique - `service_direction_activity_id, position` - `service_direction_activity_id, timing_daily_id` #### References | Columns | Target | On delete | |---|---|---| | `service_direction_activity_id` | [`service_direction_activity`](/docs/tables/service_direction_activity) | cascade | | `timing_daily_id` | [`timing_daily`](/docs/tables/timing_daily) | no action | #### Indexes - `service_direction_activity_intraday_timing_timing_daily_id_idx` on `timing_daily_id` ### `service_direction_repetition_timing` Child table — one row per repetition, deleted with its parent. | Column | Type | Null | Description | Source | |---|---|---|---|---| | `id` | `uuid primary key` | no | Primary key. | — | | `service_direction_id` | `uuid` → [`service_direction`](/docs/tables/service_direction) | no | — | — | | `position` | `integer` | no | Order of this row within its parent, from zero. | — | | `timing_nondaily_id` | `uuid` | no | Repetition timing | `/items[at0010]` | #### Unique - `service_direction_id, position` - `service_direction_id, timing_nondaily_id` #### References | Columns | Target | On delete | |---|---|---| | `service_direction_id` | [`service_direction`](/docs/tables/service_direction) | cascade | | `timing_nondaily_id` | [`timing_nondaily`](/docs/tables/timing_nondaily) | no action | #### Indexes - `service_direction_repetition_timing_timing_nondaily_id_idx` on `timing_nondaily_id` ## Value sets | Value set | Codes | |---|---| | `org.openehr::openEHR-EHR-CLUSTER.service_direction.v1/direction_duration` | 1 |