Data Obfuscation Using Shovel Expressions
In order to protect PHI from inbound documents, shovel expressions need to be added for the fields containing PHI so that they can be replaced.
The following page details the fields that need to be replacement and the shovel expressions to apply.
834
PHI | Goal | Field Replaced |
---|---|---|
Subcripber's Zip code | Truncate the Subscriber’s Zip code to the first 3 digits | N403 |
atFieldModify(<builtin:document/primary|builtin:key/data/segments|builtin:array_filter_by_key/2000|builtin:key/2000|builtin:array_filter_by_key/2100A|builtin:key/2100A|builtin:array_filter_by_key/N403|builtin:key/N403/value>, leftString(getContext(), 3))
~ ~ ~
PHI | Goal | Field Replaced |
---|---|---|
Date of birth | Replace the Date of birth with the age calculated using current system time. If the age is greater than 89 then set it as 89 | DMG02 |
atFieldModify(<builtin:document/primary|builtin:key/data/segments|builtin:array_filter_by_key/2000|builtin:key/2000|builtin:array_filter_by_key/2100A|builtin:key/2100A|builtin:array_filter_by_key/DMG02|builtin:key/DMG02>, let birth = createDateTime(readField(<builtin:key/value>), \"yyyyMMdd\", \"UTC\") in let age = floor(divide(subtract(currentTime(), birth), 31536000000), 0) in atFieldModify(<builtin:key/value>, if(gt(age, 89), 89, age)))
837i
PHI | Goal | Field Replaced |
---|---|---|
Zip code | Truncate the Subscriber’s Zip code to the first 3 digits | N403 |
atFieldModify(<builtin:document/primary|builtin:key/data/segments|builtin:array_filter_by_key/2000B|builtin:key/2000B|builtin:array_filter_by_key/2010BA|builtin:key/2010BA|builtin:array_filter_by_key/N403|builtin:key/N403/value>, leftString(getContext(), 3))
~ ~ ~
PHI | Goal | Field Replaced |
---|---|---|
Subcriber ID | Hash the subscriber ID | NM109 |
atFieldModify(<builtin:document/primary|builtin:key/data/segments|builtin:array_filter_by_key/2000B|builtin:key/2000B|builtin:array_filter_by_key/2010BA|builtin:key/2010BA|builtin:array_filter_by_key/NM109|builtin:key/NM109/value>, strSHA256(getContext()))
~ ~ ~
PHI | Goal | Field Replaced |
---|---|---|
Date of birth | Modify the date of birth to the patient’s age instead (calculated using the date of birth (DMG02) and service start date (DTP03)). If the age is greater than 89 then set it as 89 | DMG02 |
atFieldModify(<builtin:document/primary|builtin:key/data>, let serviceStartDate = createDateTime(leftString(getElemAt(flatten(readField(<builtin:key/segments|builtin:array_filter_by_key/2000B|builtin:key/2000B|builtin:array_filter_by_key/2300|builtin:key/2300|builtin:array_filter_by_key_value/DTP01/value=434|builtin:key/DTP03/value>)), 0), 8), "yyyyMMdd", "UTC") in let birthDate = createDateTime(getElemAt(flatten(readField(<builtin:key/segments|builtin:array_filter_by_key/2000B|builtin:key/2000B|builtin:array_filter_by_key/2010BA|builtin:key/2010BA|builtin:array_filter_by_key/DMG02|builtin:key/DMG02/value>)), 0), "yyyyMMdd", "UTC") in let age = floor(divide(subtract(serviceStartDate, birthDate), 31536000000), 0) in atFieldModify(<builtin:key/segments|builtin:array_filter_by_key/2000B|builtin:key/2000B|builtin:array_filter_by_key/2010BA|builtin:key/2010BA|builtin:array_filter_by_key/DMG02|builtin:key/DMG02/value>, if(gt(age, 89), 89, age)))
~ ~ ~
PHI | Goal | Field Replaced |
---|---|---|
Service start and end dates | Modify the service start and end date to truncated service start date (year/month) and span of service in days | DTP03 |
atFieldModify(<builtin:document/primary|builtin:key/data/segments|builtin:array|builtin:key/2000B|builtin:array|builtin:key/2300|builtin:array_filter_by_key_value/DTP01/value=434|builtin:key/DTP03>, let dates = readField(<builtin:key/value>) in let start = leftString(dates, 8) in let end = rightString(dates, 8) in atFieldModify(<builtin:key/value>, concat(leftString(start, 6), concat(", ", add(divide(subtract(createDateTime(end, "yyyyMMdd", "UTC"), createDateTime(start, "yyyyMMdd", "UTC")), 86400000), 0)))))
837p
PHI | Goal | Field Replaced |
---|---|---|
Zip code | Truncate the Subscriber’s Zip code to the first 3 digits | N403 |
atFieldModify(<builtin:document/primary|builtin:key/data/segments|builtin:array_filter_by_key/2000C|builtin:key/2000C|builtin:array_filter_by_key/2010CA|builtin:key/2010CA|builtin:array_filter_by_key/N403|builtin:key/N403/value>, leftString(getContext(), 3))
~ ~ ~
PHI | Goal | Field Replaced |
---|---|---|
Subcriber ID | Hash the subscriber ID | NM109 |
atFieldModify(<builtin:document/primary|builtin:key/data/segments|builtin:array_filter_by_key/2000B|builtin:key/2000B|builtin:array_filter_by_key/2010BA|builtin:key/2010BA|builtin:array_filter_by_key/NM109|builtin:key/NM109/value>, strSHA256(getContext()))
~ ~ ~
PHI | Goal | Field Replaced |
---|---|---|
Date of birth | Modify the date of birth to the patient’s age instead (calculated using the date of birth (DMG02) and service start date (DTP03)). If the age is greater than 89 then set it as 89 | DMG02 in 2010CA |
atFieldModify(<builtin:document/primary|builtin:key/data>, let serviceStartDate = createDateTime(leftString(getElemAt(flatten(readField(<builtin:key/segments|builtin:array_filter_by_key/2000C|builtin:key/2000C|builtin:array_filter_by_key/2300|builtin:key/2300|builtin:array_filter_by_key/2400|builtin:key/2400|builtin:array_filter_by_key/DTP03|builtin:key/DTP03/value>)), 0), 8), \"yyyyMMdd\", \"UTC\") in let birthDate = createDateTime(getElemAt(flatten(readField(<builtin:key/segments|builtin:array_filter_by_key/2000C|builtin:key/2000C|builtin:array_filter_by_key/2010CA|builtin:key/2010CA|builtin:array_filter_by_key/DMG02|builtin:key/DMG02/value>)), 0), \"yyyyMMdd\", \"UTC\") in let age = floor(divide(subtract(serviceStartDate, birthDate), 31536000000), 0) in atFieldModify(<builtin:key/segments|builtin:array_filter_by_key/2000C|builtin:key/2000C|builtin:array_filter_by_key/2010CA|builtin:key/2010CA|builtin:array_filter_by_key/DMG02|builtin:key/DMG02/value>, if(gt(age, 89), 89, age)))
~ ~ ~
PHI | Goal | Field Replaced |
---|---|---|
Service start and end dates | Modify the service start and end date to truncated service start date (year/month) | DTP03 |
atFieldModify(<builtin:document/primary|builtin:key/data|builtin:key/segments|builtin:array_filter_by_key/2000C|builtin:key/2000C|builtin:array_filter_by_key/2300|builtin:key/2300|builtin:array_filter_by_key/2400|builtin:key/2400|builtin:array_filter_by_key/DTP03|builtin:key/DTP03/value>, leftString(getContext(), 6))