patient
One row per person per source system. This is the demographic spine of the warehouse: every clinical and financial fact ultimately hangs off a person_id found here. Because the grain includes data_source, a single real-world individual appears once per contributing system until identity resolution collapses them; use person_id_crosswalk to trace how source identifiers were mapped onto a person_id.
At a glance
| Schema | dax_core |
| Table | patient |
| Layer | Core Data Model |
| Object type | table |
| Columns | 26 |
| Grain | person_id, data_source |
| Tags | core |
Columns
| Column | Type | Key | Terminology | Constraints | Description |
|---|---|---|---|---|---|
person_id | varchar | PK | — | not null | Dax identifier for the individual. Stable across refreshes and the join key used by every other table in the core layer. |
sex | varchar | Sex | — | Normalized administrative sex. | |
race | varchar | Race | — | Normalized race value. | |
birth_date | date | — | — | Date of birth, used to derive age and age_group. | |
death_date | date | — | — | Date of death where reported by a source system. | |
death_flag | integer | — | — | Set when any source reported the person as deceased. Check this rather than testing death_date for null, since some sources report the fact of death without a date. | |
name_suffix | varchar | — | — | — | |
first_name | varchar | — | — | Given name. Direct identifier. | |
middle_name | varchar | — | — | — | |
last_name | varchar | — | — | Family name. Direct identifier. | |
social_security_number | varchar | — | — | Direct identifier. Restrict access to this column; it is present to support identity resolution, not analytics. | |
address | varchar | — | — | — | |
city | varchar | — | — | — | |
state | varchar | — | — | State or province of residence. | |
zip_code | varchar | — | — | Postal code of residence, commonly used for geographic rollups. | |
county | varchar | — | — | County of residence. | |
latitude | float | — | — | — | |
longitude | float | — | — | — | |
phone | varchar | — | — | — | |
email | varchar | — | — | — | |
ethnicity | varchar | Ethnicity | — | Normalized ethnicity value. | |
age | integer | — | — | Age in years as of the most recent warehouse build. | |
age_group | varchar | — | — | Banded age, for cohorting and reporting without exposing exact age. | |
ingest_datetime | timestamp | — | — | When the source record was loaded into the input layer. | |
dax_last_run | timestamp | — | — | Timestamp of the warehouse build that produced this row. Present on every core table, so you can confirm you are reading current data. | |
data_source | varchar | PK | — | not null | Label for the contributing system. Part of the grain, so always include it when joining or de-duplicating across sources. |
Querying
select *
from dax_core.patient
limit 100;