patient
The US Core Patient Profile inherits from the FHIR [Patient](https://hl7.org/fhir/R4/patient.html) resource; refer to it for scope and usage definitions.
The US Core Patient Profile inherits from the FHIR Patient resource; refer to it for scope and usage definitions. This profile meets the requirements of the U.S. Core Data for Interoperability (USCDI) *Patient Demographics/Information* Data Class. It sets minimum expectations for the Patient resource to record, search, and fetch basic demographics and other administrative information about an individual patient. It specifies which core elements, extensions, vocabularies, and value sets SHALL be present and constrains how the elements are used. Providing the floor for standards development for specific use cases promotes interoperability and adoption.
Source
| Model | Leg | Role |
|---|---|---|
us-core-patient | FHIR | defines this table |
openEHR-EHR-CLUSTER.address.v1 | openEHR | merged in — Address |
openEHR-EHR-CLUSTER.electronic_communication.v1 | openEHR | merged in — Electronic communication |
This table is the union of 3 source models. Columns carrying a From value came from a model that merged into it, so the same row satisfies both specifications.
Columns
| Column | Type | Null | Description | From | Source |
|---|---|---|---|---|---|
id | uuid primary key | no | Patient.id | — | — |
created_at | timestamptz | no | Row creation timestamp. | — | — |
updated_at | timestamptz | no | Row update timestamp; maintained by the application. | — | — |
created_by | text | no | Actor who created the row. | — | — |
updated_by | text | no | Actor who last updated the row. | — | — |
racerace_coderace_systemrace_valueset_idrace_text | coded texttext, text, text, text, text | yes | 𝗔𝗗𝗗𝗜𝗧𝗜𝗢𝗡𝗔𝗟 𝗨𝗦𝗖𝗗𝗜: US Core Race Extension. (multiple races are supported in the extension) | — | Patient.extension |
ethnicityethnicity_codeethnicity_systemethnicity_valueset_idethnicity_text | coded texttext, text, text, text, text | yes | 𝗔𝗗𝗗𝗜𝗧𝗜𝗢𝗡𝗔𝗟 𝗨𝗦𝗖𝗗𝗜: US Core ethnicity Extension (multiple ethnicities are supported in the extension) | — | Patient.extension |
sexsex_codesex_systemsex_valueset_id | coded texttext, text, text, text | yes | 𝗔𝗗𝗗𝗜𝗧𝗜𝗢𝗡𝗔𝗟 𝗨𝗦𝗖𝗗𝗜: Sex Extension | — | Patient.extension |
interpreter_requiredinterpreter_required_codeinterpreter_required_systeminterpreter_required_valueset_id | coded texttext, text, text, text | yes | 𝗔𝗗𝗗𝗜𝗧𝗜𝗢𝗡𝗔𝗟 𝗨𝗦𝗖𝗗𝗜: Whether the patient needs an interpreter | — | Patient.extension |
identifier_valueidentifier_system | text, texttext, text | yes | An identifier for this patient | — | Patient.identifier |
name_textname_prefixname_familyname_givenname_suffix | text, text, text, text, texttext, text, text, text, text | yes | A name associated with the patient | — | Patient.name |
phone_numberphone_use_codeemailemail_use_code | text, text, text, texttext, text, text, text | yes | 𝗔𝗗𝗗𝗜𝗧𝗜𝗢𝗡𝗔𝗟 𝗨𝗦𝗖𝗗𝗜: A contact detail for the individual | — | Patient.telecom |
birth_date | date | yes | The date of birth for the individual | — | Patient.birthDate |
deceased_booleandeceased_datetime | boolean, timestamptzboolean, timestamptz | yes | 𝗔𝗗𝗗𝗜𝗧𝗜𝗢𝗡𝗔𝗟 𝗨𝗦𝗖𝗗𝗜: Indicates if the individual is deceased or not | — | Patient.deceased[x] |
address_lineaddress_cityaddress_districtaddress_stateaddress_postal_codeaddress_countryaddress_use_codeaddress_type_code | text, text, text, text, text, text, text, texttext, text, text, text, text, text, text, text | yes | An address for the individual | — | Patient.address |
address_latitude_magnitudeaddress_latitude_units | quantitynumeric, text | yes | Latitude | openEHR-EHR-CLUSTER.address.v1 | /items[at0007] |
address_longitude_magnitudeaddress_longitude_units | quantitynumeric, text | yes | Longitude | openEHR-EHR-CLUSTER.address.v1 | /items[at0008] |
address_altitude_magnitudeaddress_altitude_units | quantitynumeric, text | yes | Altitude | openEHR-EHR-CLUSTER.address.v1 | /items[at0009] |
address_comment | text | yes | Comment | openEHR-EHR-CLUSTER.address.v1 | /items[at0018] |
address_map_url | text | yes | Map URL | openEHR-EHR-CLUSTER.address.v1 | /items[at0019] |
address_geolocation_code | text | yes | Geolocation code | openEHR-EHR-CLUSTER.address.v1 | /items[at0021] |
phone_commentemail_comment | text, texttext, text | yes | Comment | openEHR-EHR-CLUSTER.electronic_communication.v1 | /items[at0004] |
Constraints
check ((race is null and race_code is null and race_system is null and race_valueset_id is null) or (race is not null and race_code is not null and race_system is not null and race_valueset_id is not null))
check ((ethnicity is null and ethnicity_code is null and ethnicity_system is null and ethnicity_valueset_id is null) or (ethnicity is not null and ethnicity_code is not null and ethnicity_system is not null and ethnicity_valueset_id is not null))
check ((sex is null and sex_code is null and sex_system is null and sex_valueset_id is null) or (sex is not null and sex_code is not null and sex_system is not null and sex_valueset_id is not null))
check ((interpreter_required is null and interpreter_required_code is null and interpreter_required_system is null and interpreter_required_valueset_id is null) or (interpreter_required is not null and interpreter_required_code is not null and interpreter_required_system is not null and interpreter_required_valueset_id is not null))
check (identifier_system is null or identifier_value is not null)
check (num_nonnulls(deceased_boolean, deceased_datetime) <= 1)
check ((address_latitude_magnitude is null and address_latitude_units is null) or (address_latitude_magnitude is not null and address_latitude_units is not null))
check (address_latitude_magnitude is null or (address_latitude_units = 'deg' and address_latitude_magnitude between -90 and 90))
check ((address_longitude_magnitude is null and address_longitude_units is null) or (address_longitude_magnitude is not null and address_longitude_units is not null))
check (address_longitude_magnitude is null or (address_longitude_units = 'deg' and address_longitude_magnitude between -180 and 180))
check ((address_altitude_magnitude is null and address_altitude_units is null) or (address_altitude_magnitude is not null and address_altitude_units is not null))References
| Columns | Target | On delete |
|---|---|---|
race_valueset_id, race_code, race_system, race | valueset_code | restrict |
ethnicity_valueset_id, ethnicity_code, ethnicity_system, ethnicity | valueset_code | restrict |
sex_valueset_id, sex_code, sex_system, sex | valueset_code | restrict |
interpreter_required_valueset_id, interpreter_required_code, interpreter_required_system, interpreter_required | valueset_code | restrict |
Referenced by
16 tables reference patient, via patient_id. The first 15 alphabetically:
care_teamviapatient_idcare_team_participantviamember_patient_idcoverageviapatient_idcoverageviapayor_patient_iddeviceviapatient_iddocument_referenceviasubject_patient_iddocument_reference_authorviapatient_idencounterviapatient_idpatient_tribal_affiliationviapatient_idpatient_other_identifierviapatient_idpatient_other_nameviapatient_idpatient_other_telecomviapatient_idpatient_other_addressviapatient_idpatient_communicationviapatient_idperson_linkviatarget_patient_id
Child tables
6 tables hang off patient, one row per repetition.
patient_tribal_affiliation
Child table — one row per repetition, deleted with its parent.
| Column | Type | Null | Description | From | Source |
|---|---|---|---|---|---|
id | uuid primary key | no | Primary key. | — | — |
patient_id | uuid → patient | no | — | — | — |
tribal_affiliationtribal_affiliation_codetribal_affiliation_system | text, text, texttext, text, text | yes | 𝗔𝗗𝗗𝗜𝗧𝗜𝗢𝗡𝗔𝗟 𝗨𝗦𝗖𝗗𝗜: Tribal Affiliation Extension | — | Patient.extension |
Constraints
check ((tribal_affiliation_code is null and tribal_affiliation_system is null) or (tribal_affiliation_code is not null and tribal_affiliation_system is not null))References
| Columns | Target | On delete |
|---|---|---|
patient_id | patient | cascade |
Indexes
patient_tribal_affiliation_patient_id_idxonpatient_id
patient_other_identifier
Child table — one row per repetition, deleted with its parent.
| Column | Type | Null | Description | From | Source |
|---|---|---|---|---|---|
id | uuid primary key | no | Primary key. | — | — |
patient_id | uuid → patient | no | — | — | — |
identifier_value | text | no | — | — | — |
identifier_system | text | yes | — | — | — |
identifier_use | text | yes | — | — | — |
valid_from | timestamptz | yes | — | — | — |
valid_until | timestamptz | yes | — | — | — |
Unique
patient_id, identifier_system, identifier_value
References
| Columns | Target | On delete |
|---|---|---|
patient_id | patient | cascade |
patient_other_name
Child table — one row per repetition, deleted with its parent.
| Column | Type | Null | Description | From | Source |
|---|---|---|---|---|---|
id | uuid primary key | no | Primary key. | — | — |
patient_id | uuid → patient | no | — | — | — |
use_code | text | yes | — | — | — |
name_text | text | yes | — | — | — |
name_prefix | text | yes | — | — | — |
name_family | text | yes | — | — | — |
name_given | text | yes | — | — | — |
name_suffix | text | yes | — | — | — |
valid_from | timestamptz | yes | — | — | — |
valid_until | timestamptz | yes | — | — | — |
References
| Columns | Target | On delete |
|---|---|---|
patient_id | patient | cascade |
Indexes
patient_other_name_patient_id_idxonpatient_id
patient_other_telecom
Child table — one row per repetition, deleted with its parent.
| Column | Type | Null | Description | From | Source |
|---|---|---|---|---|---|
id | uuid primary key | no | Primary key. | — | — |
patient_id | uuid → patient | no | — | — | — |
system | text | no | — | — | — |
value | text | no | — | — | — |
use_code | text | yes | — | — | — |
rank | integer | yes | — | — | — |
valid_from | timestamptz | yes | — | — | — |
valid_until | timestamptz | yes | — | — | — |
comment | text | yes | Comment | openEHR-EHR-CLUSTER.electronic_communication.v1 | /items[at0004] |
References
| Columns | Target | On delete |
|---|---|---|
patient_id | patient | cascade |
Indexes
patient_other_telecom_patient_id_idxonpatient_id
patient_other_address
Child table — one row per repetition, deleted with its parent.
| Column | Type | Null | Description | From | Source |
|---|---|---|---|---|---|
id | uuid primary key | no | Primary key. | — | — |
patient_id | uuid → patient | no | — | — | — |
address_line | text | yes | newline-delimited for multiple lines | — | — |
address_city | text | yes | — | — | — |
address_district | text | yes | — | — | — |
address_state | text | yes | — | — | — |
address_postal_code | text | yes | — | — | — |
address_country | text | yes | — | — | — |
use_code | text | yes | — | — | — |
type_code | text | yes | — | — | — |
valid_from | timestamptz | yes | — | — | — |
valid_until | timestamptz | yes | — | — | — |
address_latitude_magnitudeaddress_latitude_units | quantitynumeric, text | yes | Latitude | openEHR-EHR-CLUSTER.address.v1 | /items[at0007] |
address_longitude_magnitudeaddress_longitude_units | quantitynumeric, text | yes | Longitude | openEHR-EHR-CLUSTER.address.v1 | /items[at0008] |
address_altitude_magnitudeaddress_altitude_units | quantitynumeric, text | yes | Altitude | openEHR-EHR-CLUSTER.address.v1 | /items[at0009] |
address_comment | text | yes | Comment | openEHR-EHR-CLUSTER.address.v1 | /items[at0018] |
address_map_url | text | yes | Map URL | openEHR-EHR-CLUSTER.address.v1 | /items[at0019] |
address_geolocation_code | text | yes | Geolocation code | openEHR-EHR-CLUSTER.address.v1 | /items[at0021] |
Constraints
check ((address_latitude_magnitude is null and address_latitude_units is null) or (address_latitude_magnitude is not null and address_latitude_units is not null))
check (address_latitude_magnitude is null or (address_latitude_units = 'deg' and address_latitude_magnitude between -90 and 90))
check ((address_longitude_magnitude is null and address_longitude_units is null) or (address_longitude_magnitude is not null and address_longitude_units is not null))
check (address_longitude_magnitude is null or (address_longitude_units = 'deg' and address_longitude_magnitude between -180 and 180))
check ((address_altitude_magnitude is null and address_altitude_units is null) or (address_altitude_magnitude is not null and address_altitude_units is not null))References
| Columns | Target | On delete |
|---|---|---|
patient_id | patient | cascade |
Indexes
patient_other_address_patient_id_idxonpatient_id
patient_communication
Child table — one row per repetition, deleted with its parent.
| Column | Type | Null | Description | From | Source |
|---|---|---|---|---|---|
id | uuid primary key | no | Primary key. | — | — |
patient_id | uuid → patient | no | — | — | — |
languagelanguage_codelanguage_systemlanguage_valueset_id | coded texttext, text, text, text | yes | The language which can be used to communicate with the patient about his or her health | — | Patient.communication.language |
Constraints
check ((language is null and language_code is null and language_system is null and language_valueset_id is null) or (language is not null and language_code is not null and language_system is not null and language_valueset_id is not null))References
| Columns | Target | On delete |
|---|---|---|
patient_id | patient | cascade |
language_valueset_id, language_code, language_system, language | valueset_code | restrict |
Indexes
patient_communication_patient_id_idxonpatient_id
Value sets
| Value set | Codes |
|---|---|
http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1021.121 | 0 |
http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1267.16 | 0 |
http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.4.642.2.575 | 0 |
http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.4.642.40.2.48.3 | 0 |
http://terminology.hl7.org/ValueSet/Languages | 0 |