Navigated to blog › safe-harbor-date-de-identification-csv
Back to Blog
Healthcare

HIPAA Safe Harbor Date De-Identification in Patient CSV Files (2026)

May 20, 2026
8
By SplitForge Team

A research coordinator at a regional hospital was preparing a patient dataset for an academic partner.

She had removed names, SSNs, phone numbers, and addresses — all 18 Safe Harbor identifiers, she believed.

The dataset still had this row:

patient_id,birth_date,admission_date,discharge_date,age,diagnosis
PT-4412,1931-03-15,2024-11-02,2024-11-07,93,CHF

A colleague flagged it before it went out.

birth_date: 1931-03-15 — the month and day are obvious PHI. But the birth year is also a problem: combined with admission_date, it reveals this patient is 93 years old. Under Safe Harbor, the birth year must be removed too. The age field must become "90 or older."

Dates are the most technically precise identifiers in patient records. Getting them wrong is one of the most common Safe Harbor compliance failures.


TL;DR

HIPAA Safe Harbor §164.514(b)(2)(i)(C) requires removing all date elements more specific than year from records directly related to an individual — birth, admission, discharge, and death dates become year-only. Any individual whose age exceeds 89 requires an additional step: the birth year itself, and any dates that would indicate such age, must also be removed and aggregated to "90 or older." Date-shifting is a compliant alternative for longitudinal research: a consistent per-patient random offset preserves time intervals between events without exposing real calendar dates.

Methodology note (May 2026): Rules in this guide follow 45 CFR §164.514(b)(2)(i)(C) as published. HIPAA regulations are authoritative — verify current rule text at HHS.gov before finalizing de-identification procedures for production data releases.


For the complete Safe Harbor workflow across all 18 identifiers, see our complete Safe Harbor de-identification workflow.

⚖️ NOT LEGAL ADVICE — This post covers HIPAA Safe Harbor date de-identification for informational purposes only. Whether your specific data and process satisfy Safe Harbor depends on your data, use case, and organizational context. Consult qualified legal and compliance counsel before making de-identification or sharing decisions for regulated data.


Table of Contents


What §164.514(b)(2)(i)(C) Actually Requires

The Safe Harbor date rule is precise. The regulation requires removing:

"All elements of dates (except year) for dates directly related to an individual, including birth date, admission date, discharge date, date of death..."

Three things follow from this:

1. Only year may remain. Month, day, and time components must go. 1979-07-22 becomes 1979. 2024-11-07 becomes 2024.

2. The rule covers dates "directly related to an individual." This includes birth, admission, discharge, and death — but the same logic applies to any date tied to the patient: procedure dates, visit dates, prescription fill dates, referral dates. If the date links to the patient's identity, it falls under this rule.

3. Year-only does not mean year is always safe. The second clause of the regulation adds the 90+ rule.


The 90+ Aggregation Rule

The full text of §164.514(b)(2)(i)(C) continues:

"...and all ages over 89 and all elements of dates (including year) indicative of such age, except that such ages and elements may be aggregated into a single category of age 90 or older."

This means:

  • Any patient whose age exceeds 89 must have even the birth year removed — because birth year combined with the current year reveals age over 89
  • Any dates that would allow a reader to infer age over 89 must also be aggregated
  • The permitted replacement is the single category "90 or older"

Why? A birth year of 1931 in a 2024 dataset reveals that the patient is 93. Small elderly populations are statistically easier to re-identify even without names.

What stays, what goes:

PatientBirth YearAgeAfter Safe Harbor
45-year-old197945Birth year 1979 retained; age 45 retained
67-year-old195767Birth year 1957 retained; age 67 retained
93-year-old193193Birth year removed; age → "90 or older"
91-year-old193391Birth year removed; age → "90 or older"

Which Date Columns Appear in Patient CSVs

Date-type columns are pervasive in healthcare exports. Common examples:

Encounter and clinical dates:

  • birth_date, date_of_birth, dob
  • admission_date, admit_date
  • discharge_date
  • date_of_death, death_date
  • visit_date, appointment_date
  • procedure_date, surgery_date

Administrative dates:

  • enrollment_date, plan_start_date
  • prescription_date, fill_date, dispense_date
  • referral_date, order_date
  • last_visit_date, next_scheduled_date

Derived date fields to check:

  • age_at_admission — may indirectly reveal birth year
  • length_of_stay — safe (duration, not calendar date)
  • days_since_last_visit — safe only if the reference date is also de-identified

Audit every column with "date," "dt," "time," or "year" in its name. Don't rely on column names alone — check values.


Reality: What a Pre-De-Identification CSV Looks Like

A typical EHR export before date de-identification:

patient_id,birth_date,admission_date,discharge_date,procedure_date,age,diagnosis
PT-1001,1979-07-22,2024-10-15,2024-10-18,2024-10-16,45,Type 2 Diabetes
PT-2047,1957-03-09,2024-10-20,2024-10-25,2024-10-22,67,COPD
PT-4412,1931-03-15,2024-11-02,2024-11-07,2024-11-04,93,CHF
PT-5518,1945-11-28,2024-11-10,2024-11-14,2024-11-11,78,Hypertension

After Safe Harbor date de-identification:

patient_id,birth_year,admission_year,discharge_year,procedure_year,age_group,diagnosis
PT-1001,1979,2024,2024,2024,45,Type 2 Diabetes
PT-2047,1957,2024,2024,2024,67,COPD
PT-4412,[removed],2024,2024,2024,90+,CHF
PT-5518,1945,2024,2024,2024,78,Hypertension

PT-4412: birth year removed (age 93 > 89), age replaced with "90+". All other patients: month and day stripped, year retained, age retained because ≤ 89.


Date-Shifting for Longitudinal Research

Year-only retention solves the compliance problem but can destroy research utility. If a study needs to measure time between events — days between diagnosis and first treatment, or interval between hospitalizations — stripping to year-only collapses that information.

Date-shifting is a compliant alternative recognized in HIPAA guidance:

How it works:

  1. Generate a consistent random offset for each patient (e.g., patient PT-1001 always shifts by −47 days)
  2. Apply the same offset to all of that patient's dates
  3. Publish the shifted dates

What it preserves: Temporal intervals between events are intact. If admission was 12 days after diagnosis, that 12-day relationship survives.

What it removes: Real calendar dates. A reader cannot determine that admission was October 2024 — only that it was 12 days after diagnosis in the shifted timeline.

Key constraint: The shift offset must not be disclosed with the data. If the offset is included, the transformation is reversible.

The 90+ rule still applies to date-shifted data. If a patient's birth year (after shifting) still implies age over 89, that birth year must be removed or the age must be aggregated to "90 or older."

Date-shifting is not the same as Safe Harbor — it is a supporting technique within a Safe Harbor or Expert Determination workflow, not a standalone method.


Step-by-Step: Apply Date De-Identification in SplitForge

1. Load the patient CSV

Open SplitForge Data Masking and drag in your file. The tool reads locally — no upload, no server transmission.

2. Identify date columns

Scan column names for date fields. Select each date column you need to de-identify.

3. Apply year-only truncation

For each date column, configure masking to retain year only. The tool will strip month and day components.

4. Apply the 90+ rule

For the age column (or birth_year if retained), configure masking to:

  • Replace values over 89 with the label "90 or older"
  • Remove the birth year for rows where age exceeds 89

5. Review derived fields

Check any columns that contain durations, age-at-event, or similar derived values. Retain duration fields (they contain no calendar date). For age-at-event fields, apply the same 90+ aggregation logic.

6. Validate output

Confirm no month/day values remain in any date column. Confirm no age values over 89 remain. Confirm birth years are absent for the 90+ population.

Processing happens locally in your browser, which means the de-identification step creates no disclosure to a business associate — see Cloud vs. Browser PHI De-Identification for the full BAA analysis.


Limitations

Satisfying Safe Harbor removes data from HIPAA's definition of PHI; it does not make the data anonymous. De-identified ≠ anonymized — residual re-identification risk can remain, and "actual knowledge" that the remaining data could identify someone re-activates HIPAA obligations.

Year-only loses temporal precision. 2024-10-15 and 2024-10-28 both become 2024 — the 13-day difference disappears. For studies where intra-year timing matters, consider date-shifting instead.

The 90+ check requires accurate age data. If your CSV lacks a reliable age or birth year column, automated detection of the 90+ population is not possible. Manual review may be required.

Date-shifting is not a Safe Harbor standalone. Date-shifting must be part of a documented de-identification process — removing it from that context does not satisfy Safe Harbor on its own.

Manual review remains advisable for high-stakes releases. De-identification of clinical data for external publication warrants review by a qualified privacy officer or legal counsel, particularly for research involving elderly populations or rare conditions.


FAQ

All elements of dates more specific than year that relate directly to an individual: birth date, admission date, discharge date, and date of death are explicitly named in 45 CFR §164.514(b)(2)(i)(C). Procedure dates, visit dates, prescription dates, and any other dates tied to the patient's record follow the same logic — only the year may remain.

Yes, for patients aged 89 or under. The year may be retained after stripping month and day. For patients aged 90 or older, even the birth year must be removed — it is replaced with the aggregate category "90 or older."

Date-shifting applies a consistent per-patient random offset to all dates, preserving the time intervals between events while removing real calendar dates. Use it when your research depends on measuring time between events (days between diagnosis and treatment, hospitalization intervals) and year-only retention would destroy that information. The shift offset must not be disclosed with the data.

Both. If a patient's age is over 89, the age field itself must be replaced with "90 or older," and the birth year must be removed. Any other date field that would allow a reader to calculate age over 89 (for example, admission year combined with a retained birth year) must also be handled.

For the date identifier (one of the 18 Safe Harbor elements), yes — year-only satisfies §164.514(b)(2)(i)(C). But Safe Harbor requires removing all 18 identifier types from the dataset. Dates are one element; names, geographic data, device identifiers, and the others must also be addressed. See the full Safe Harbor checklist for the complete list.

Lower than full dates, but not zero. Birth year + diagnosis + ZIP code can still narrow down a patient in small populations or for rare conditions. Year-only satisfies the Safe Harbor regulatory standard; whether that standard is sufficient for your specific data and population is a judgment for your privacy officer or IRB.

Yes, if the output meets Safe Harbor requirements (or Expert Determination by a qualified statistician). HIPAA's authorization requirements do not apply to properly de-identified data. Your organization should document the de-identification method used. See de-identifying patient data for research for the research-specific workflow.



Conclusion

Safe Harbor date de-identification has two distinct requirements most teams miss:

Requirement 1: Strip all date elements more specific than year from any date directly related to the individual. Birth, admission, discharge, and death dates — month and day go; year stays.

Requirement 2: For the 90+ population — remove the birth year too. Age over 89 and dates that reveal such age must aggregate to the single category "90 or older."

The research coordinator's near-miss wasn't carelessness. The 90+ rule is easy to overlook when the structured de-id pass already removed names and explicit identifiers. A birth year of 1931 doesn't look like a name. It looks like a number. But in combination with the dataset's context, it identifies a specific elderly patient.

For longitudinal studies where year-only would lose critical temporal information, date-shifting preserves research utility while removing real calendar dates — as long as the shift offset remains confidential and the 90+ rule still applies to shifted data.

Next: ZIP Code De-Identification Under Safe Harbor →

De-Identify Patient CSV Dates Under Safe Harbor

Strip birth, admission, discharge, and procedure dates to year-only
Apply 90+ aggregation to ages over 89 and implicated birth years
Processing is browser-local — patient data never leaves your device

Continue Reading

More guides to help you work smarter with your data

csv-guides

Do You Need a Database for a Large CSV File? (2026 Answer)

The internet's answer to every big CSV is 'import it into a database.' Sometimes that's right. Usually it's a weekend of setup to answer one question. Here's the honest decision.

Read More
csv-guides

How to Open a Large CSV File — Even 10 GB, No Database (2026)

Excel dies at 1,048,576 rows, text editors choke, and 'just use a database' is a weekend project. Here's every real way to open a huge CSV — receipts included.

Read More
excel-guides

Excel File Too Large to Open? Fix Every Memory Error (2026)

Excel freezes, throws 'not enough memory,' or crashes outright — on a file that's only 40 MB. Here's why file size lies about memory, and the fix per error.

Read More