--- title: "DICOM Anonymization & HIPAA De-identification" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{DICOM Anonymization & HIPAA De-identification} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ## Overview `dicomtk` implements HIPAA Safe Harbor and the **DICOM PS3.15 Basic Application Level Confidentiality Profile** via `dicom_anonymize()`. Unlike legacy wrappers that invoke external `dcmodify` subprocesses, `dicomtk` performs de-identification natively in C++17 memory. ```{r anon-workflow} library(dicomtk) library(dplyr) # Create a synthetic DICOM file containing PHI tags mat <- matrix(seq(0, 255), nrow = 16, ncol = 16) raw_dcm <- tempfile(fileext = ".dcm") write_dicom( mat, raw_dcm, metadata = list( PatientName = "DOE^JOHN", PatientID = "MRN-987654", PatientBirthDate = "19800415", StudyDate = "20251016", InstitutionName = "GENERAL HOSPITAL", Modality = "CT" ) ) # Inspect original PHI tags dicom_tag_value( raw_dcm, c("PatientName", "PatientID", "PatientBirthDate", "StudyDate", "InstitutionName") ) # Anonymize with longitudinal date shifting (-100 days), UID regeneration, and private tag removal anon_dcm <- dicom_anonymize( raw_dcm, patient_name = "TRIAL^SUBJECT_001", patient_id = "SUBJ_001", shift_days = -100L, erase_private = TRUE, regenerate_uids = TRUE ) # Verify de-identification dicom_tag_value( anon_dcm, c("PatientName", "PatientID", "StudyDate", "InstitutionName", "PatientIdentityRemoved") ) ```