--- title: "pulse_oximetry" description: "Blood oxygen and related measurements, measured by pulse oximetry or pulse CO-oximetry." --- Blood oxygen and related measurements, measured by pulse oximetry or pulse CO-oximetry. **Purpose.** To record blood oxygen and related measurements, measured by pulse oximetry or pulse CO-oximetry. ## Source | Model | Leg | Role | |---|---|---| | `openEHR-EHR-OBSERVATION.pulse_oximetry.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. | — | | `sp_o2_numerator`
`sp_o2_denominator` | numeric, numeric
`numeric`, `numeric` | yes | SpO₂ | `/data[at0001]/events[at0002]/data[at0003]/items[at0006]` | | `sp_oc_magnitude`
`sp_oc_units` | quantity
`numeric`, `text` | yes | SpOC | `/data[at0001]/events[at0002]/data[at0003]/items[at0044]` | | `sp_co_numerator`
`sp_co_denominator` | numeric, numeric
`numeric`, `numeric` | yes | SpCO | `/data[at0001]/events[at0002]/data[at0003]/items[at0045]` | | `sp_met_numerator`
`sp_met_denominator` | numeric, numeric
`numeric`, `numeric` | yes | SpMet | `/data[at0001]/events[at0002]/data[at0003]/items[at0046]` | | `interpretation`
`interpretation_code`
`interpretation_system`
`interpretation_valueset_id` | coded text
`text`, `text`, `text`, `text` | yes | Interpretation | `/data[at0001]/events[at0002]/data[at0003]/items[at0058]` | | `comment` | `text` | yes | Comment | `/data[at0001]/events[at0002]/data[at0003]/items[at0036]` | | `inspired_oxygen` | `uuid` | yes | Inspired oxygen | `/data[at0001]/events[at0002]/state[at0014]/items[at0015]` | | `confounding_factors` | `text` | yes | Confounding factors | `/data[at0001]/events[at0002]/state[at0014]/items[at0016]` | | `sensor_site`
`sensor_site_code`
`sensor_site_system`
`sensor_site_valueset_id` | coded text
`text`, `text`, `text`, `text` | yes | Sensor site | `/protocol[at0007]/items[at0009]` | | `pre_post_ductal`
`pre_post_ductal_code`
`pre_post_ductal_system`
`pre_post_ductal_valueset_id` | coded text
`text`, `text`, `text`, `text` | yes | Pre/post-ductal | `/protocol[at0007]/items[at0061]` | | `oximetry_device` | `uuid` | yes | Oximetry device | `/protocol[at0007]/items[at0018]` | ## Constraints ```sql check ((sp_o2_numerator is null and sp_o2_denominator is null) or (sp_o2_numerator is not null and sp_o2_denominator is not null)) check (sp_o2_denominator is null or sp_o2_denominator <> 0) check (sp_o2_denominator is null or sp_o2_denominator = 100) check (sp_o2_numerator is null or sp_o2_numerator between 0 and 100) check ((sp_oc_magnitude is null and sp_oc_units is null) or (sp_oc_magnitude is not null and sp_oc_units is not null)) check (sp_oc_magnitude is null or (sp_oc_units = 'ml/dl' and sp_oc_magnitude >= 0)) check ((sp_co_numerator is null and sp_co_denominator is null) or (sp_co_numerator is not null and sp_co_denominator is not null)) check (sp_co_denominator is null or sp_co_denominator <> 0) check (sp_co_denominator is null or sp_co_denominator = 100) check (sp_co_numerator is null or sp_co_numerator between 0 and 100) check ((sp_met_numerator is null and sp_met_denominator is null) or (sp_met_numerator is not null and sp_met_denominator is not null)) check (sp_met_denominator is null or sp_met_denominator <> 0) check (sp_met_denominator is null or sp_met_denominator = 100) check (sp_met_numerator is null or sp_met_numerator between 0 and 100) check ((interpretation_code is null and interpretation_system is null and interpretation_valueset_id is null) or (interpretation is not null and interpretation_code is not null and interpretation_system is not null and interpretation_valueset_id is not null)) check ((sensor_site_code is null and sensor_site_system is null and sensor_site_valueset_id is null) or (sensor_site is not null and sensor_site_code is not null and sensor_site_system is not null and sensor_site_valueset_id is not null)) check ((pre_post_ductal_code is null and pre_post_ductal_system is null and pre_post_ductal_valueset_id is null and pre_post_ductal is null) or (pre_post_ductal is not null and pre_post_ductal_code is not null and pre_post_ductal_system is not null and pre_post_ductal_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 | | `interpretation_valueset_id, interpretation_code, interpretation_system, interpretation` | [`valueset_code`](/docs/tables/valueset_code) | restrict | | `sensor_site_valueset_id, sensor_site_code, sensor_site_system, sensor_site` | [`valueset_code`](/docs/tables/valueset_code) | restrict | | `pre_post_ductal_valueset_id, pre_post_ductal_code, pre_post_ductal_system, pre_post_ductal` | [`valueset_code`](/docs/tables/valueset_code) | restrict | | `inspired_oxygen` | [`inspired_oxygen`](/docs/tables/inspired_oxygen) | no action | | `oximetry_device` | [`device`](/docs/tables/device) | no action | ## Referenced by - [`pulse_oximetry_multimedia_image`](/docs/tables/pulse_oximetry_multimedia_image) via `pulse_oximetry_id` ## Indexes - `pulse_oximetry_form_id_idx` on `form_id` - `pulse_oximetry_inspired_oxygen_idx` on `inspired_oxygen` - `pulse_oximetry_oximetry_device_idx` on `oximetry_device` ## Child tables 1 table hang off `pulse_oximetry`, one row per repetition. ### `pulse_oximetry_multimedia_image` Child table — one row per repetition, deleted with its parent. | Column | Type | Null | Description | Source | |---|---|---|---|---| | `id` | `uuid primary key` | no | Primary key. | — | | `pulse_oximetry_id` | `uuid` → [`pulse_oximetry`](/docs/tables/pulse_oximetry) | no | — | — | | `position` | `integer` | no | Order of this row within its parent, from zero. | — | | `attachment_id` | `uuid` | no | Multimedia image | `/data[at0001]/events[at0002]/data[at0003]/items[at0060]` | #### Unique - `pulse_oximetry_id, position` - `pulse_oximetry_id, attachment_id` #### References | Columns | Target | On delete | |---|---|---| | `pulse_oximetry_id` | [`pulse_oximetry`](/docs/tables/pulse_oximetry) | cascade | | `attachment_id` | [`attachment`](/docs/tables/attachment) | restrict | #### Indexes - `pulse_oximetry_multimedia_image_attachment_id_idx` on `attachment_id` ## Value sets | Value set | Codes | |---|---| | `org.openehr::openEHR-EHR-OBSERVATION.pulse_oximetry.v1/pre_post_ductal` | 3 |