--- title: "hirsutism_scales" description: "A grouping of related assessment scales used to quantify distribution and growth of body hair in women." --- A grouping of related assessment scales used to quantify distribution and growth of body hair in women. **Purpose.** To record hair scores for up to thirteen body areas and a total sum of scores, in order to quantify excessive male-pattern hair growth in women. ## Source | Model | Leg | Role | |---|---|---| | `openEHR-EHR-OBSERVATION.hirsutism_scales.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. | — | | `upper_lip_hair`
`upper_lip_hair_code`
`upper_lip_hair_system`
`upper_lip_hair_numeric`
`upper_lip_hair_valueset_id` | coded text
`text`, `text`, `text`, `numeric`, `text` | yes | Upper lip hair | `/data[at0001]/events[at0002]/data[at0003]/items[at0005]` | | `chin_hair`
`chin_hair_code`
`chin_hair_system`
`chin_hair_numeric`
`chin_hair_valueset_id` | coded text
`text`, `text`, `text`, `numeric`, `text` | yes | Chin hair | `/data[at0001]/events[at0002]/data[at0003]/items[at0019]` | | `sideburn_hair`
`sideburn_hair_code`
`sideburn_hair_system`
`sideburn_hair_numeric`
`sideburn_hair_valueset_id` | coded text
`text`, `text`, `text`, `numeric`, `text` | yes | Sideburn hair | `/data[at0001]/events[at0002]/data[at0003]/items[at0082]` | | `chest_hair`
`chest_hair_code`
`chest_hair_system`
`chest_hair_numeric`
`chest_hair_valueset_id` | coded text
`text`, `text`, `text`, `numeric`, `text` | yes | Chest hair | `/data[at0001]/events[at0002]/data[at0003]/items[at0025]` | | `upper_back_hair`
`upper_back_hair_code`
`upper_back_hair_system`
`upper_back_hair_numeric`
`upper_back_hair_valueset_id` | coded text
`text`, `text`, `text`, `numeric`, `text` | yes | Upper back hair | `/data[at0001]/events[at0002]/data[at0003]/items[at0031]` | | `lower_back_hair`
`lower_back_hair_code`
`lower_back_hair_system`
`lower_back_hair_numeric`
`lower_back_hair_valueset_id` | coded text
`text`, `text`, `text`, `numeric`, `text` | yes | Lower back hair | `/data[at0001]/events[at0002]/data[at0003]/items[at0037]` | | `upper_abdomen_hair`
`upper_abdomen_hair_code`
`upper_abdomen_hair_system`
`upper_abdomen_hair_numeric`
`upper_abdomen_hair_valueset_id` | coded text
`text`, `text`, `text`, `numeric`, `text` | yes | Upper abdomen hair | `/data[at0001]/events[at0002]/data[at0003]/items[at0043]` | | `lower_abdomen_hair`
`lower_abdomen_hair_code`
`lower_abdomen_hair_system`
`lower_abdomen_hair_numeric`
`lower_abdomen_hair_valueset_id` | coded text
`text`, `text`, `text`, `numeric`, `text` | yes | Lower abdomen hair | `/data[at0001]/events[at0002]/data[at0003]/items[at0049]` | | `upper_arm_hair`
`upper_arm_hair_code`
`upper_arm_hair_system`
`upper_arm_hair_numeric`
`upper_arm_hair_valueset_id` | coded text
`text`, `text`, `text`, `numeric`, `text` | yes | Upper arm hair | `/data[at0001]/events[at0002]/data[at0003]/items[at0055]` | | `lower_arm_hair`
`lower_arm_hair_code`
`lower_arm_hair_system`
`lower_arm_hair_numeric`
`lower_arm_hair_valueset_id` | coded text
`text`, `text`, `text`, `numeric`, `text` | yes | Lower arm hair | `/data[at0001]/events[at0002]/data[at0003]/items[at0061]` | | `thigh_hair`
`thigh_hair_code`
`thigh_hair_system`
`thigh_hair_numeric`
`thigh_hair_valueset_id` | coded text
`text`, `text`, `text`, `numeric`, `text` | yes | Thigh hair | `/data[at0001]/events[at0002]/data[at0003]/items[at0067]` | | `lower_leg_hair`
`lower_leg_hair_code`
`lower_leg_hair_system`
`lower_leg_hair_numeric`
`lower_leg_hair_valueset_id` | coded text
`text`, `text`, `text`, `numeric`, `text` | yes | Lower leg hair | `/data[at0001]/events[at0002]/data[at0003]/items[at0073]` | | `perineum_hair`
`perineum_hair_code`
`perineum_hair_system`
`perineum_hair_numeric`
`perineum_hair_valueset_id` | coded text
`text`, `text`, `text`, `numeric`, `text` | yes | Perineum hair | `/data[at0001]/events[at0002]/data[at0003]/items[at0091]` | | `total_score` | `integer` | yes | Total score | `/data[at0001]/events[at0002]/data[at0003]/items[at0079]` | | `ferriman_gallwey_score` | `integer` | yes | Ferriman-Gallwey score | `/data[at0001]/events[at0002]/data[at0003]/items[at0089]` | | `modified_ferriman_gallwey_score` | `integer` | yes | Modified Ferriman-Gallwey score | `/data[at0001]/events[at0002]/data[at0003]/items[at0090]` | ## Constraints ```sql check ((upper_lip_hair_code is null and upper_lip_hair_system is null and upper_lip_hair_numeric is null and upper_lip_hair is null) or (upper_lip_hair_valueset_id is not null and upper_lip_hair_code is not null and upper_lip_hair_system is not null and upper_lip_hair_numeric is not null and upper_lip_hair is not null)) check ((chin_hair_code is null and chin_hair_system is null and chin_hair_numeric is null and chin_hair is null) or (chin_hair_valueset_id is not null and chin_hair_code is not null and chin_hair_system is not null and chin_hair_numeric is not null and chin_hair is not null)) check ((sideburn_hair_code is null and sideburn_hair_system is null and sideburn_hair_numeric is null and sideburn_hair is null) or (sideburn_hair_valueset_id is not null and sideburn_hair_code is not null and sideburn_hair_system is not null and sideburn_hair_numeric is not null and sideburn_hair is not null)) check ((chest_hair_code is null and chest_hair_system is null and chest_hair_numeric is null and chest_hair is null) or (chest_hair_valueset_id is not null and chest_hair_code is not null and chest_hair_system is not null and chest_hair_numeric is not null and chest_hair is not null)) check ((upper_back_hair_code is null and upper_back_hair_system is null and upper_back_hair_numeric is null and upper_back_hair is null) or (upper_back_hair_valueset_id is not null and upper_back_hair_code is not null and upper_back_hair_system is not null and upper_back_hair_numeric is not null and upper_back_hair is not null)) check ((lower_back_hair_code is null and lower_back_hair_system is null and lower_back_hair_numeric is null and lower_back_hair is null) or (lower_back_hair_valueset_id is not null and lower_back_hair_code is not null and lower_back_hair_system is not null and lower_back_hair_numeric is not null and lower_back_hair is not null)) check ((upper_abdomen_hair_code is null and upper_abdomen_hair_system is null and upper_abdomen_hair_numeric is null and upper_abdomen_hair is null) or (upper_abdomen_hair_valueset_id is not null and upper_abdomen_hair_code is not null and upper_abdomen_hair_system is not null and upper_abdomen_hair_numeric is not null and upper_abdomen_hair is not null)) check ((lower_abdomen_hair_code is null and lower_abdomen_hair_system is null and lower_abdomen_hair_numeric is null and lower_abdomen_hair is null) or (lower_abdomen_hair_valueset_id is not null and lower_abdomen_hair_code is not null and lower_abdomen_hair_system is not null and lower_abdomen_hair_numeric is not null and lower_abdomen_hair is not null)) check ((upper_arm_hair_code is null and upper_arm_hair_system is null and upper_arm_hair_numeric is null and upper_arm_hair is null) or (upper_arm_hair_valueset_id is not null and upper_arm_hair_code is not null and upper_arm_hair_system is not null and upper_arm_hair_numeric is not null and upper_arm_hair is not null)) check ((lower_arm_hair_code is null and lower_arm_hair_system is null and lower_arm_hair_numeric is null and lower_arm_hair is null) or (lower_arm_hair_valueset_id is not null and lower_arm_hair_code is not null and lower_arm_hair_system is not null and lower_arm_hair_numeric is not null and lower_arm_hair is not null)) check ((thigh_hair_code is null and thigh_hair_system is null and thigh_hair_numeric is null and thigh_hair is null) or (thigh_hair_valueset_id is not null and thigh_hair_code is not null and thigh_hair_system is not null and thigh_hair_numeric is not null and thigh_hair is not null)) check ((lower_leg_hair_code is null and lower_leg_hair_system is null and lower_leg_hair_numeric is null and lower_leg_hair is null) or (lower_leg_hair_valueset_id is not null and lower_leg_hair_code is not null and lower_leg_hair_system is not null and lower_leg_hair_numeric is not null and lower_leg_hair is not null)) check ((perineum_hair_code is null and perineum_hair_system is null and perineum_hair_numeric is null and perineum_hair is null) or (perineum_hair_valueset_id is not null and perineum_hair_code is not null and perineum_hair_system is not null and perineum_hair_numeric is not null and perineum_hair is not null)) check (total_score is null or total_score between 0 and 52) check (ferriman_gallwey_score is null or ferriman_gallwey_score between 0 and 44) check (modified_ferriman_gallwey_score is null or modified_ferriman_gallwey_score between 0 and 36) ``` ## 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 | | `upper_lip_hair_valueset_id, upper_lip_hair_code, upper_lip_hair_system, upper_lip_hair, upper_lip_hair_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict | | `chin_hair_valueset_id, chin_hair_code, chin_hair_system, chin_hair, chin_hair_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict | | `sideburn_hair_valueset_id, sideburn_hair_code, sideburn_hair_system, sideburn_hair, sideburn_hair_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict | | `chest_hair_valueset_id, chest_hair_code, chest_hair_system, chest_hair, chest_hair_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict | | `upper_back_hair_valueset_id, upper_back_hair_code, upper_back_hair_system, upper_back_hair, upper_back_hair_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict | | `lower_back_hair_valueset_id, lower_back_hair_code, lower_back_hair_system, lower_back_hair, lower_back_hair_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict | | `upper_abdomen_hair_valueset_id, upper_abdomen_hair_code, upper_abdomen_hair_system, upper_abdomen_hair, upper_abdomen_hair_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict | | `lower_abdomen_hair_valueset_id, lower_abdomen_hair_code, lower_abdomen_hair_system, lower_abdomen_hair, lower_abdomen_hair_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict | | `upper_arm_hair_valueset_id, upper_arm_hair_code, upper_arm_hair_system, upper_arm_hair, upper_arm_hair_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict | | `lower_arm_hair_valueset_id, lower_arm_hair_code, lower_arm_hair_system, lower_arm_hair, lower_arm_hair_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict | | `thigh_hair_valueset_id, thigh_hair_code, thigh_hair_system, thigh_hair, thigh_hair_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict | | `lower_leg_hair_valueset_id, lower_leg_hair_code, lower_leg_hair_system, lower_leg_hair, lower_leg_hair_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict | | `perineum_hair_valueset_id, perineum_hair_code, perineum_hair_system, perineum_hair, perineum_hair_numeric` | [`valueset_code`](/docs/tables/valueset_code) | restrict | ## Indexes - `hirsutism_scales_form_id_idx` on `form_id` ## Value sets | Value set | Codes | |---|---| | `org.openehr::openEHR-EHR-OBSERVATION.hirsutism_scales.v1/chest_hair` | 5 | | `org.openehr::openEHR-EHR-OBSERVATION.hirsutism_scales.v1/chin_hair` | 5 | | `org.openehr::openEHR-EHR-OBSERVATION.hirsutism_scales.v1/lower_abdomen_hair` | 5 | | `org.openehr::openEHR-EHR-OBSERVATION.hirsutism_scales.v1/lower_arm_hair` | 5 | | `org.openehr::openEHR-EHR-OBSERVATION.hirsutism_scales.v1/lower_back_hair` | 5 | | `org.openehr::openEHR-EHR-OBSERVATION.hirsutism_scales.v1/lower_leg_hair` | 5 | | `org.openehr::openEHR-EHR-OBSERVATION.hirsutism_scales.v1/perineum_hair` | 5 | | `org.openehr::openEHR-EHR-OBSERVATION.hirsutism_scales.v1/sideburn_hair` | 5 | | `org.openehr::openEHR-EHR-OBSERVATION.hirsutism_scales.v1/thigh_hair` | 5 | | `org.openehr::openEHR-EHR-OBSERVATION.hirsutism_scales.v1/upper_abdomen_hair` | 5 | | `org.openehr::openEHR-EHR-OBSERVATION.hirsutism_scales.v1/upper_arm_hair` | 5 | | `org.openehr::openEHR-EHR-OBSERVATION.hirsutism_scales.v1/upper_back_hair` | 5 | | `org.openehr::openEHR-EHR-OBSERVATION.hirsutism_scales.v1/upper_lip_hair` | 5 |