com.johnsnowlabs.nlp.annotators.deid.fhir
Hl7v2DeIdentification
Companion object Hl7v2DeIdentification
class Hl7v2DeIdentification extends BaseFhirDeIdentification
A Spark Transformer for de-identifying HL7 v2.x messages (the classic pipe / hat delimited
"vertical bar" format, e.g. ADTA01)., ORUR01
Overview
Performs field-level obfuscation on HL7 v2 messages using a lightweight, dependency-free
delimiter parser. Because the HL7 v2 wire format (segments, fields, components, repetitions,
subcomponents and the escape character declared in MSH-1/MSH-2) is identical across all
v2.x versions, a single Terser-style path notation targets PHI uniformly from v2.1 through
v2.9 without any version-specific structure libraries.
Path Notation
"PID-5" -> segment PID, field 5 (all components / repetitions) "PID-5-1" -> field 5, component 1 (family name) "PID-5-1-2" -> field 5, component 1, subcomponent 2 "PID(2)-5-1" -> the 2nd PID segment occurrence, field 5, component 1
Field numbers match the HL7 specification exactly, including the MSH off-by-one convention
(MSH-1 is the field separator, MSH-2 the encoding characters).
Structured Field De-identification
val deid = new Hl7v2DeIdentification() .setInputCol("hl7") .setOutputCol("deidentified") .setMode("obfuscate") .setMappingRules(Map( "PID-5-1" -> "LAST_NAME", // family name "PID-5-2" -> "FIRST_NAME", // given name "PID-7" -> "DATE", // date of birth "PID-11-1" -> "STREET", "PID-13" -> "PHONE" )) val result = deid.deidentify(hl7MessageString)
Free-text De-identification
Narrative fields such as OBX-5 (observation value) and NTE-3 (comment) can be routed
through an NLP de-identification pipeline:
deid .setFreeTextPaths(Array("OBX-5", "NTE-3")) .setPipeline(spark, deidPipeline, "obfuscated")
- See also
BaseFhirDeIdentification for the shared de-identification functionality
- Grouped
- Alphabetic
- By Inheritance
- Hl7v2DeIdentification
- BaseFhirDeIdentification
- ParamsAndFeaturesWritable
- DefaultParamsWritable
- MLWritable
- HasOutputAnnotationCol
- HasInputCol
- CheckLicense
- DeidModelParams
- LightDeIdentificationParams
- MaskingParams
- BaseDeidParams
- HasFeatures
- Transformer
- PipelineStage
- Logging
- Params
- Serializable
- Serializable
- Identifiable
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
$[T](param: Param[T]): T
- Attributes
- protected
- Definition Classes
- Params
-
def
$$[T](feature: StructFeature[T]): T
- Attributes
- protected
- Definition Classes
- HasFeatures
-
def
$$[K, V](feature: MapFeature[K, V]): Map[K, V]
- Attributes
- protected
- Definition Classes
- HasFeatures
-
def
$$[T](feature: SetFeature[T]): Set[T]
- Attributes
- protected
- Definition Classes
- HasFeatures
-
def
$$[T](feature: ArrayFeature[T]): Array[T]
- Attributes
- protected
- Definition Classes
- HasFeatures
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
val
GEOGRAPHIC_ENTITIES_PRIORITY: Map[String, Int]
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
val
GEO_METADATA_KEY: String
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
val
additionalDateFormats: StringArrayParam
Additional date formats to be considered during date obfuscation.
Additional date formats to be considered during date obfuscation. This allows users to specify custom date formats in addition to the default dateFormats.
- Definition Classes
- BaseDeidParams
-
val
ageRanges: IntArrayParam
List of integers specifying limits of the age groups to preserve during obfuscation
List of integers specifying limits of the age groups to preserve during obfuscation
- Definition Classes
- BaseDeidParams
-
val
ageRangesByHipaa: BooleanParam
A Boolean variable indicating whether to obfuscate ages based on HIPAA (Health Insurance Portability and Accountability Act) Privacy Rule.
A Boolean variable indicating whether to obfuscate ages based on HIPAA (Health Insurance Portability and Accountability Act) Privacy Rule.
The HIPAA Privacy Rule mandates that ages from patients older than 90 years must be obfuscated, while age for patients 90 years or younger can remain unchanged.
When
true, age entities larger than 90 will be obfuscated as per HIPAA Privacy Rule, the others will remain unchanged. Whenfalse, ageRanges parameter is valid.- Definition Classes
- BaseDeidParams
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
val
blackListEntities: StringArrayParam
List of entities coming from NER or regex rules that will be ignored for masking or obfuscation.
List of entities coming from NER or regex rules that will be ignored for masking or obfuscation. The rest entities will be processed. Defaults to an empty array.
- Definition Classes
- BaseDeidParams
-
def
checkValidEnvironment(spark: Option[SparkSession], scopes: Seq[String], metadata: Option[Map[String, Value]]): Unit
- Definition Classes
- CheckLicense
-
def
checkValidScope(scope: String): Unit
- Definition Classes
- CheckLicense
-
def
checkValidScopeAndEnvironment(scope: String, spark: Option[SparkSession], checkLp: Boolean, metadata: Option[Map[String, Value]]): Unit
- Definition Classes
- CheckLicense
-
def
checkValidScopesAndEnvironment(scopes: Seq[String], spark: Option[SparkSession], checkLp: Boolean, metadata: Option[Map[String, Value]]): Unit
- Definition Classes
- CheckLicense
-
final
def
clear(param: Param[_]): Hl7v2DeIdentification.this.type
- Definition Classes
- Params
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
lazy val
combinedDateFormats: Array[String]
- Attributes
- protected
- Definition Classes
- BaseDeidParams
-
val
consistentAcrossNameParts: BooleanParam
Param that indicates whether consistency should be enforced across different parts of a name (e.g., first name, middle name, last name).
Param that indicates whether consistency should be enforced across different parts of a name (e.g., first name, middle name, last name). When set to
true, the same transformation or obfuscation will be applied consistently to all parts of the same name entity, even if those parts appear separately.For example, if "John Smith" is obfuscated as "Liam Brown", then:
- When the full name "John Smith" appears, it will be replaced with "Liam Brown"
- When "John" or "Smith" appear individually, they will still be obfuscated as "Liam" and "Brown" respectively, ensuring consistency in name transformation.
Default: true
- Definition Classes
- BaseDeidParams
-
def
copy(extra: ParamMap): Hl7v2DeIdentification.this.type
- Definition Classes
- BaseFhirDeIdentification → Transformer → PipelineStage → Params
-
def
copyValues[T <: Params](to: T, extra: ParamMap): T
- Attributes
- protected
- Definition Classes
- Params
-
val
countryObfuscation: BooleanParam
Whether to obfuscate country entities or not.
Whether to obfuscate country entities or not. If true, country entities will be obfuscated using the Faker module. If false, country entities will be skipped during obfuscation. Default: false
- Definition Classes
- BaseDeidParams
-
val
customFakers: MapFeature[String, Array[String]]
The dictionary of custom fakers to specify the obfuscation terms for the entities.
The dictionary of custom fakers to specify the obfuscation terms for the entities. You can specify the entity and the terms to be used for obfuscation.
- Definition Classes
- LightDeIdentificationParams
-
val
dateEntities: StringArrayParam
List of date entities.
List of date entities. Default: Array("DATE", "DOB", "DOD", "EFFDATE", "FISCAL_YEAR")
- Definition Classes
- BaseDeidParams
-
val
dateFormats: StringArrayParam
Format of dates to displace
Format of dates to displace
- Definition Classes
- BaseDeidParams
-
val
dateToYear: BooleanParam
true if dates must be converted to years, false otherwise
true if dates must be converted to years, false otherwise
- Definition Classes
- BaseDeidParams
-
val
dateToYearEntities: StringArrayParam
List of date entities that must be converted to year only (e.g.
List of date entities that must be converted to year only (e.g. Array("DOB")). When this list is non-empty, only the listed date entities are converted to a year, while every other date entity is obfuscated with the regular format-preserving date displacement. This overrides the global dateToYear flag for the listed entities. When the list is empty (default), the global dateToYear flag governs all date entities as before. Only entities that are also present in dateEntities are affected. Default: Array()
- Definition Classes
- BaseDeidParams
-
val
days: IntParam
Number of days to obfuscate the dates by displacement.
Number of days to obfuscate the dates by displacement. If not provided a random integer between 1 and 60 will be used
- Definition Classes
- BaseDeidParams
-
final
def
deIdentifyInternal(input: String, rules: Map[String, String]): String
Main entry point for string de-id
Main entry point for string de-id
- Attributes
- protected
- Definition Classes
- Hl7v2DeIdentification → BaseFhirDeIdentification
-
final
def
defaultCopy[T <: Params](extra: ParamMap): T
- Attributes
- protected
- Definition Classes
- Params
-
val
deidMarkers: StringArrayParam
Tuple of markers to indicate the deidentified entities in the output text.
Tuple of markers to indicate the deidentified entities in the output text. The first element is the prefix marker and the second element is the suffix marker. For example, if the markers are set to ("<DEID>", "</DEID>"), then an fake like "John Doe" would be transformed to "<DEID>John Doe</DEID>" in the deidentified text.
Defaults to ("", "") which means no markers will be added.
- Definition Classes
- BaseDeidParams
-
def
deidentify(jsonStr: String): String
- Definition Classes
- BaseFhirDeIdentification
-
def
deidentifyWordToReplace(wordToReplace: String, entityClass: String, namePartsMemory: Map[String, String]): String
- Attributes
- protected
- Definition Classes
- BaseFhirDeIdentification
-
def
deidentify_list(jsonStrs: ArrayList[String]): List[String]
- Definition Classes
- BaseFhirDeIdentification
-
def
deidentify_list(jsonStrs: Array[String]): Array[String]
- Definition Classes
- BaseFhirDeIdentification
-
def
documentAwareNameSeed(documentID: Option[String]): Int
Returns the seed used to select fake names.
Returns the seed used to select fake names. When BaseDeidParams.idBasedObfuscation is enabled and a document ID is available, the seed is derived from the document ID (salted with the base seed) so that the fake name selection depends on the document. This makes the same name obfuscate consistently within a document but differently across documents. When disabled or when no document ID is available, the regular base seed is returned.
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
val
enableDefaultObfuscationEquivalents: BooleanParam
Whether to enable default obfuscation equivalents for common entities.
Whether to enable default obfuscation equivalents for common entities. This parameter allows the system to automatically include a set of predefined common English name equivalents. Default: false
- Definition Classes
- BaseDeidParams
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
explainParam(param: Param[_]): String
- Definition Classes
- Params
-
def
explainParams(): String
- Definition Classes
- Params
-
def
extractDateAndRest(wordToReplace: String): (String, String)
- Definition Classes
- Hl7v2DeIdentification → BaseFhirDeIdentification
-
final
def
extractParamMap(): ParamMap
- Definition Classes
- Params
-
final
def
extractParamMap(extra: ParamMap): ParamMap
- Definition Classes
- Params
-
val
fakerLengthOffset: IntParam
It specifies how much length deviation is accepted in obfuscation, with keepTextSizeForObfuscation enabled.
It specifies how much length deviation is accepted in obfuscation, with keepTextSizeForObfuscation enabled. Value must be greater than 0. Default is 3.
- Definition Classes
- BaseDeidParams
-
val
features: ArrayBuffer[Feature[_, _, _]]
- Definition Classes
- HasFeatures
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
val
fixedMaskLength: IntParam
Select the fixed mask length: this is the length of the masking sequence that will be used when the 'fixed_length_chars' masking policy is selected.
Select the fixed mask length: this is the length of the masking sequence that will be used when the 'fixed_length_chars' masking policy is selected.
- Definition Classes
- MaskingParams
-
def
formatStateAsOriginal(fakeState: String, originalState: String): String
Renders a fake state in the same format as the chunk it replaces.
Renders a fake state in the same format as the chunk it replaces.
Addresses.state is always stored as a two letter abbreviation, so a spelled out chunk such as "New York" has to be expanded to "California" instead of being replaced by "CA". Unknown abbreviations are returned unchanged.
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
val
freeTextPaths: StringArrayParam
HL7 v2 paths to free-text fields for de-identification, e.g.
HL7 v2 paths to free-text fields for de-identification, e.g.
Array("OBX-5", "NTE-3"). These are processed with the pipeline set via setPipeline. -
val
genderAwareness: BooleanParam
Whether to use gender-aware names or not during obfuscation.
Whether to use gender-aware names or not during obfuscation. This param effects only names. If value is true, it might decrease performance. Default: False
- Definition Classes
- BaseDeidParams
-
def
generateFakeBySameLength(wordToReplace: String, entity: String): String
obfuscating digits to new digits, letters to new letters and others remains the same
obfuscating digits to new digits, letters to new letters and others remains the same
- Definition Classes
- DeidModelParams
-
def
generateFakeBySameLengthUsingHash(wordToReplace: String, entity: String): String
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
val
geoConsistency: BooleanParam
Whether to enforce consistent obfuscation across geographical entities: state, city, street, zip and phone.
Whether to enforce consistent obfuscation across geographical entities: state, city, street, zip and phone.
## Functionality Overview This parameter enables intelligent geographical entity obfuscation that maintains realistic relationships between different geographic components. When enabled, the system ensures that obfuscated addresses form coherent, valid combinations rather than random replacements.
## Supported Entity Types The following geographical entities are processed with priority order: - **state** (Priority: 0) - US state names - **city** (Priority: 1) - City names - **zip** (Priority: 2) - Zip codes - **street** (Priority: 3) - Street addresses - **phone** (Priority: 4) - Phone numbers
## Language Requirement **IMPORTANT**: Geographic consistency is only applied when: -
geoConsistencyparameter is set totrueAND -languageparameter is set toenFor non-English configurations, this feature is automatically disabled regardless of the parameter setting.
## Consistency Algorithm When geographical entities comes from the chunk columns:
1. **Entity Grouping**: All geographic entities are identified and grouped by type 2. **Fake Address Selection**: A consistent set of fake US addresses is selected using hash-based deterministic selection to ensure reproducibility 3. **Priority-Based Mapping**: Entities are mapped to fake addresses following the priority order (state → city → zip → street → phone) 4. **Consistent Replacement**: All entities of the same type within a document use the same fake address pool, maintaining geographical coherence
## Parameter Interactions **IMPORTANT**: Enabling this parameter automatically disables: -
keepTextSizeForObfuscation- Text size preservation is not maintained -consistentObfuscation- Standard consistency rules are overridden - file-based fakersThis is necessary because geographic consistency requires specific fake address selection that may not preserve original text lengths or follow standard obfuscation patterns.
default: false
- Definition Classes
- BaseDeidParams
-
def
get[T](feature: StructFeature[T]): Option[T]
- Attributes
- protected
- Definition Classes
- HasFeatures
-
def
get[K, V](feature: MapFeature[K, V]): Option[Map[K, V]]
- Attributes
- protected
- Definition Classes
- HasFeatures
-
def
get[T](feature: SetFeature[T]): Option[Set[T]]
- Attributes
- protected
- Definition Classes
- HasFeatures
-
def
get[T](feature: ArrayFeature[T]): Option[Array[T]]
- Attributes
- protected
- Definition Classes
- HasFeatures
-
final
def
get[T](param: Param[T]): Option[T]
- Definition Classes
- Params
-
def
getAdditionalDateFormats: Array[String]
Gets the value of additionalDateFormats
Gets the value of additionalDateFormats
- Definition Classes
- BaseDeidParams
-
def
getAgeRanges: Array[Int]
Gets ageRanges param.
Gets ageRanges param.
- Definition Classes
- BaseDeidParams
-
def
getAgeRangesByHipaa: Boolean
Gets the value of ageRangesByHipaa.
Gets the value of ageRangesByHipaa.
- Definition Classes
- BaseDeidParams
-
def
getBlackListEntities: Array[String]
Gets blackListEntities param
Gets blackListEntities param
- Definition Classes
- BaseDeidParams
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
getConsistentAcrossNameParts: Boolean
Gets the value of consistentAcrossNameParts.
Gets the value of consistentAcrossNameParts.
- Definition Classes
- BaseDeidParams
-
def
getCountryObfuscation: Boolean
Gets the value of countryObfuscation.
Gets the value of countryObfuscation.
- Definition Classes
- BaseDeidParams
-
def
getCustomFakers: Map[String, List[String]]
Gets customFakers param.
Gets customFakers param.
- Attributes
- protected
- Definition Classes
- LightDeIdentificationParams
-
def
getDateEntities: Array[String]
Gets dateEntities param.
Gets dateEntities param.
- Definition Classes
- BaseDeidParams
-
def
getDateFormats: Array[String]
Gets the value of dateFormats
Gets the value of dateFormats
- Definition Classes
- BaseDeidParams
-
def
getDateToYear: Boolean
Gets dateToYear param.
Gets dateToYear param.
- Definition Classes
- BaseDeidParams
-
def
getDateToYearEntities: Array[String]
Gets dateToYearEntities param.
Gets dateToYearEntities param.
- Definition Classes
- BaseDeidParams
-
def
getDays: Int
Gets days param
Gets days param
- Definition Classes
- BaseDeidParams
-
final
def
getDefault[T](param: Param[T]): Option[T]
- Definition Classes
- Params
-
def
getDefaultDateFormat: String
- Attributes
- protected
- Definition Classes
- Hl7v2DeIdentification → BaseFhirDeIdentification
-
def
getDefaultObfuscationEquivalents: Array[StaticObfuscationEntity]
- Definition Classes
- BaseDeidParams
-
def
getDefaultObfuscationEquivalentsAsJava: Array[ArrayList[String]]
- Definition Classes
- BaseDeidParams
-
def
getDeidMarkers: (String, String)
Gets deidMarkers param as a tuple of (prefix, suffix).
Gets deidMarkers param as a tuple of (prefix, suffix).
- Definition Classes
- BaseDeidParams
-
def
getDocumentIDFromSentences(sentences: Seq[Annotation]): Option[String]
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
getEnableDefaultObfuscationEquivalents: Boolean
Gets the value of enableDefaultObfuscationEquivalents.
Gets the value of enableDefaultObfuscationEquivalents.
- Definition Classes
- BaseDeidParams
-
def
getEntitiesBySentence(chunks: Seq[Annotation], sentenceCount: Int): Seq[Seq[Annotation]]
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
getEntityBasedObfuscationRefSource(entityClass: String): String
- Attributes
- protected
- Definition Classes
- BaseDeidParams
-
def
getEntityField(annotation: Annotation): String
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
getExternalFakers(entityClass: String, customFakers: Map[String, List[String]], wordToReplace: String): List[String]
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
getFakeByHashcode(fakes: Seq[String], wordToReplace: String, entity: String, seed: Int): String
Picks a fake from
fakesby hashing the original word, so the same word always maps to the same fake for a given seed.Picks a fake from
fakesby hashing the original word, so the same word always maps to the same fake for a given seed.The hash can land on the original word itself, which would silently leave the PHI in place. Small pools make this likely enough to matter: a two letter STATE has a 1 in 50 chance. When it happens the draw is repeated once with the next seed. The retry is deliberately not forced into a loop and the candidate list is never filtered, so the existing selection algorithm and its determinism stay intact; if the second draw collides as well the value is returned unchanged.
Formatted entities (see BaseDeidParams.sameLengthFormattedEntities, for example ZIP or SSN) do not reach this method, they are obfuscated by generateFakeBySameLengthUsingHash which already guarantees a different value.
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
getFakeWithSameSize(fakes: Seq[String], wordToReplace: String, entity: String, lengthDeviation: Int, seed: Int): String
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
getFakerLengthOffset: Int
Gets fakerLengthOffset param
Gets fakerLengthOffset param
- Definition Classes
- BaseDeidParams
-
def
getFakersEntity(entity: String, result: String): Seq[String]
- Definition Classes
- DeidModelParams
-
def
getFixedMaskLength: Int
Gets fixedMaskLength param.
Gets fixedMaskLength param.
- Definition Classes
- MaskingParams
-
def
getFreeTextPaths: Array[String]
Gets freeTextPaths parameter value.
-
def
getGenderAwareness: Boolean
Gets genderAwareness param.
Gets genderAwareness param.
- Definition Classes
- BaseDeidParams
-
def
getGeoConsistency: Boolean
Gets the value of geoConsistency.
Gets the value of geoConsistency.
- Definition Classes
- BaseDeidParams
-
def
getIdBasedObfuscation: Boolean
Gets idBasedObfuscation param.
Gets idBasedObfuscation param.
- Definition Classes
- BaseDeidParams
-
final
def
getInputCol: String
- Definition Classes
- HasInputCol
-
def
getIsRandomDateDisplacement: Boolean
Gets isRandomDateDisplacement param
Gets isRandomDateDisplacement param
- Definition Classes
- BaseDeidParams
-
def
getKeepMonth: Boolean
Gets keepMonth param
Gets keepMonth param
- Definition Classes
- BaseDeidParams
-
def
getKeepTextSizeForObfuscation: Boolean
Gets keepTextSizeForObfuscation param
Gets keepTextSizeForObfuscation param
- Definition Classes
- BaseDeidParams
-
def
getKeepYear: Boolean
Gets keepYear param
Gets keepYear param
- Definition Classes
- BaseDeidParams
-
def
getLanguage: String
Gets language param.
Gets language param.
- Definition Classes
- BaseDeidParams
-
def
getMappingRules: Map[String, String]
- Definition Classes
- BaseFhirDeIdentification
-
def
getMappingRulesAsStr: String
- Definition Classes
- BaseFhirDeIdentification
-
def
getMaskStatus(entityClass: String): String
- Attributes
- protected
- Definition Classes
- MaskingParams
-
def
getMaskingPolicy: String
Gets maskingPolicy param.
Gets maskingPolicy param.
- Definition Classes
- MaskingParams
-
def
getMaxRandomDisplacementDays: Int
Gets maxRandomDisplacementDays param
Gets maxRandomDisplacementDays param
- Definition Classes
- BaseDeidParams
-
def
getMaxSentence(annotations: Seq[Annotation]): Int
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
getMinYear: Int
Gets minYear param.
Gets minYear param.
- Definition Classes
- BaseDeidParams
-
def
getMode: String
Gets mode param.
Gets mode param.
- Definition Classes
- BaseDeidParams
-
def
getNationalityAwareness: Boolean
Gets nationalityAwareness param.
Gets nationalityAwareness param.
- Definition Classes
- BaseDeidParams
-
def
getObfuscateDate: Boolean
Gets obfuscateDate param
Gets obfuscateDate param
- Definition Classes
- BaseDeidParams
-
def
getObfuscateRefSource: String
Gets obfuscateRefSource param.
Gets obfuscateRefSource param.
- Definition Classes
- BaseDeidParams
-
def
getObfuscateZipByHipaa: Boolean
Gets the value of obfuscateZipByHipaa.
Gets the value of obfuscateZipByHipaa.
- Definition Classes
- BaseDeidParams
-
def
getObfuscateZipKeepDigits: Int
Gets the value of obfuscateZipKeepDigits.
Gets the value of obfuscateZipKeepDigits.
- Definition Classes
- BaseDeidParams
-
def
getObfuscationEquivalents: Option[Array[StaticObfuscationEntity]]
Gets the value of obfuscationEquivalents.
Gets the value of obfuscationEquivalents.
- Definition Classes
- BaseDeidParams
-
final
def
getOrDefault[T](param: Param[T]): T
- Definition Classes
- Params
-
final
def
getOutputCol: String
- Definition Classes
- HasOutputAnnotationCol
-
def
getParam(paramName: String): Param[Any]
- Definition Classes
- Params
- def getPipeline: PipelineModel
-
def
getRegion: String
Gets region param.
Gets region param.
- Definition Classes
- BaseDeidParams
-
def
getSameLengthFormattedEntities(): Array[String]
- Definition Classes
- BaseDeidParams
-
final
def
getScopes: Seq[String]
- Attributes
- protected
- Definition Classes
- BaseFhirDeIdentification
-
def
getSeed(): Int
- Definition Classes
- BaseDeidParams
-
def
getSelectiveObfuscateRefSource: Map[String, String]
Gets selectiveObfuscateRefSource param.
Gets selectiveObfuscateRefSource param.
- Definition Classes
- BaseDeidParams
-
def
getSelectiveObfuscateRefSourceAsStr: String
- Definition Classes
- BaseDeidParams
-
def
getSelectiveObfuscationModes: Option[Map[String, Array[String]]]
Gets selectiveObfuscationModes param.
Gets selectiveObfuscationModes param.
- Definition Classes
- BaseDeidParams
-
def
getShiftDaysFromSentences(sentences: Seq[Annotation]): Option[Int]
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
getStaticObfuscationFakes(entityClass: String, wordToReplace: String): Option[Seq[String]]
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
getStaticObfuscationPairs: Option[Array[StaticObfuscationEntity]]
- Definition Classes
- BaseDeidParams
-
def
getUnnormalizedDateMode: String
Gets unnormalizedDateMode param.
Gets unnormalizedDateMode param.
- Definition Classes
- BaseDeidParams
-
def
getUseShiftDays: Boolean
Gets useShiftDays param.
Gets useShiftDays param.
- Definition Classes
- BaseDeidParams
-
def
getValidAgeRanges: Array[Int]
Gets valid ageRanges whether ageRangesByHipaa is true or not.
Gets valid ageRanges whether ageRangesByHipaa is true or not.
- Attributes
- protected
- Definition Classes
- BaseDeidParams
-
def
handleCasing(originalFake: String, wordToReplace: String): String
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
handleGeographicConsistency(protectedEntities: Seq[Seq[Annotation]]): Seq[Seq[Annotation]]
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
handleObfuscationEquivalents(sentenceBaseAnnotations: Seq[Seq[Annotation]]): Seq[Seq[Annotation]]
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
handleSelectiveObfuscationModes(wordToReplace: String, entityClass: String, namePartsMemory: Map[String, String]): String
- Attributes
- protected
- Definition Classes
- BaseFhirDeIdentification
-
final
def
hasDefault[T](param: Param[T]): Boolean
- Definition Classes
- Params
-
def
hasParam(paramName: String): Boolean
- Definition Classes
- Params
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
val
idBasedObfuscation: BooleanParam
Whether to make obfuscation depend on the document ID.
Whether to make obfuscation depend on the document ID. Currently this param is only valid for name-related entities (NAME, PATIENT, DOCTOR, SIGNING_PERSON, PERSON, CLIENT, FIRST_NAME, LAST_NAME). It has no effect on other entities.
The document ID is read from the
idmetadata of the document (the sameidused for consistent date shifting). When enabled and a document ID is available, the fake name selection is derived from the combination of the document ID and the original name, which gives the following behavior:- Same document ID + same name -> same fake (consistent within a document).
- Same document ID + different names -> different fakes.
- Different document IDs + same name -> different fakes (a name is obfuscated differently across documents).
When disabled, or when no document ID is available, name obfuscation falls back to the regular seed-based selection. It works together with genderAwareness and nationalityAwareness.
Default: False
- Definition Classes
- BaseDeidParams
-
def
initializeLogIfNecessary(isInterpreter: Boolean, silent: Boolean): Boolean
- Attributes
- protected
- Definition Classes
- Logging
-
def
initializeLogIfNecessary(isInterpreter: Boolean): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
final
val
inputCol: Param[String]
- Definition Classes
- HasInputCol
-
def
isArabic: Boolean
- Attributes
- protected
- Definition Classes
- MaskingParams
-
def
isDateToYearEntity(entityClass: String): Boolean
Returns true if the given entity class must be converted to year only, based on dateToYearEntities.
Returns true if the given entity class must be converted to year only, based on dateToYearEntities. This only considers the explicit per-entity list; callers may still combine it with the global dateToYear flag when the list is empty.
- Attributes
- protected
- Definition Classes
- BaseDeidParams
-
final
def
isDefined(param: Param[_]): Boolean
- Definition Classes
- Params
-
def
isEmptyString(value: String): Boolean
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
isGeoEntity(annotation: Annotation): Boolean
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
isGeoObfuscationEnabled: Boolean
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
isNameEntity(entityClass: String): Boolean
The name-related entities that BaseDeidParams.idBasedObfuscation applies to.
The name-related entities that BaseDeidParams.idBasedObfuscation applies to. It extends nameEntities with the first/last name entities.
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
isNationalityAware: Boolean
Nationality awareness is only applied when the
nationalityAwarenessparam is enabled and the language is English.Nationality awareness is only applied when the
nationalityAwarenessparam is enabled and the language is English. For any other language it is disabled regardless of the param value.- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
isObfuscateDate(entityClass: String): Boolean
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
val
isRandomDateDisplacement: BooleanParam
Use a random displacement days in dates entities,that random number is based on the DeIdentificationParams.seed If true use random displacement days in dates entities,if false use the DeIdentificationParams.days The default value is false.
Use a random displacement days in dates entities,that random number is based on the DeIdentificationParams.seed If true use random displacement days in dates entities,if false use the DeIdentificationParams.days The default value is false.
- Definition Classes
- BaseDeidParams
-
def
isSameAsOriginal(fake: String, wordToReplace: String): Boolean
Whether an obfuscated value is indistinguishable from the value it should have replaced.
Whether an obfuscated value is indistinguishable from the value it should have replaced. The comparison ignores casing and surrounding spaces because handleCasing already aligns the fake with the original, so "ny" replaced by "NY" is still a leak.
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
final
def
isSet(param: Param[_]): Boolean
- Definition Classes
- Params
-
def
isTraceEnabled(): Boolean
- Attributes
- protected
- Definition Classes
- Logging
-
val
keepMonth: BooleanParam
Whether to keep the month intact when obfuscating date entities.
Whether to keep the month intact when obfuscating date entities. If true, the month will remain unchanged during the obfuscation process. If false, the month will be modified along with the year and day. Default: false.
- Definition Classes
- BaseDeidParams
-
val
keepTextSizeForObfuscation: BooleanParam
It specifies whether the output should maintain the same character length as the input text.
It specifies whether the output should maintain the same character length as the input text. the output text will remain the same if same length is available, else length might vary.
- Definition Classes
- BaseDeidParams
-
val
keepYear: BooleanParam
Whether to keep the year intact when obfuscating date entities.
Whether to keep the year intact when obfuscating date entities. If true, the year will remain unchanged during the obfuscation process. If false, the year will be modified along with the month and day. Default: false.
- Definition Classes
- BaseDeidParams
-
val
language: Param[String]
The language used to select the regex file and some faker entities.
The language used to select the regex file and some faker entities. 'en'(English),'de'(German), 'es'(Spanish), 'fr'(French), 'ar'(Arabic) or 'ro'(Romanian) Default:'en'
- Definition Classes
- BaseDeidParams
-
implicit
lazy val
locale: Locale
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
def
log: Logger
- Attributes
- protected
- Definition Classes
- Logging
-
def
logDebug(msg: ⇒ String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logDebug(msg: ⇒ String): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logError(msg: ⇒ String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logError(msg: ⇒ String): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logInfo(msg: ⇒ String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logInfo(msg: ⇒ String): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logName: String
- Attributes
- protected
- Definition Classes
- Logging
-
def
logTrace(msg: ⇒ String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logTrace(msg: ⇒ String): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logWarning(msg: ⇒ String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logWarning(msg: ⇒ String): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
val
mappingRules: MapFeature[String, String]
FHIR field de-identification rules for primitive type obfuscation.
FHIR field de-identification rules for primitive type obfuscation.
Overview
Defines how specific FHIR elements should be de-identified using FHIR Path syntax. Supports all FHIR primitive types with built-in obfuscation strategies.
- Definition Classes
- BaseFhirDeIdentification
-
def
maskEntity(wordToReplace: String, entityClass: String): String
- Attributes
- protected
- Definition Classes
- MaskingParams
-
def
maskEntity(annotation: Annotation, entityClass: String): String
- Attributes
- protected
- Definition Classes
- MaskingParams
-
def
maskEntityWithPolicy(wordToReplace: String, maskingPolicy: String, entityClass: String): String
- Attributes
- protected
- Definition Classes
- MaskingParams
-
def
maskEntityWithPolicy(annotation: Annotation, maskingPolicy: String, entityClass: String): String
- Attributes
- protected
- Definition Classes
- MaskingParams
-
val
maskingPolicy: Param[String]
Select the masking policy:
Select the masking policy:
- 'entity_labels': Replace the values with the entity value.
- 'same_length_chars': Replace the name with the asterix with same length minus two plus brackets on both end.If the entity is less than 3 chars (like Jo, or 5), we can just use asterix without brackets.
- 'fixed_length_chars': Replace the obfuscated entity with a masking sequence composed of a fixed number of asterisk.
- 'entity_labels_without_brackets': Replace the values with the entity value without brackets.
- 'same_length_chars_without_brackets': Replace the name with the asterix with same length without brackets.
- Default: 'entity_labels'
- Definition Classes
- MaskingParams
-
val
maxRandomDisplacementDays: IntParam
Maximum number of days for random date displacement.
Maximum number of days for random date displacement. Default is 1825 (5 years). If isRandomDateDisplacement is true, a random number of days between 1 and maxRandomDisplacementDays will be used for date displacement.
- Definition Classes
- BaseDeidParams
-
val
minYear: IntParam
Minimum year to use when converting date to year
Minimum year to use when converting date to year
- Definition Classes
- BaseDeidParams
-
val
mode: Param[String]
Mode for Anonymizer ['mask' or 'obfuscate'].
Mode for Anonymizer ['mask' or 'obfuscate']. Default: 'mask'
- Mask mode: The entities will be replaced by their entity types.
- Obfuscate mode: The entity is replaced by an obfuscator's term.
- Definition Classes
- BaseDeidParams
Given the following text: "David Hale visited EEUU a couple of years ago"
- Mask mode: "
<PERSON>visited<COUNTRY>a couple of years ago" - Obfuscate mode: "Bryan Johnson visited Japan a couple of years ago"
- Mask mode: "
Example: -
val
nameEntities: Seq[String]
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
val
nationalityAwareness: BooleanParam
Whether to use nationality-aware names or not during obfuscation.
Whether to use nationality-aware names or not during obfuscation. This param affects only names (NAME, PATIENT, DOCTOR, first_name, last_name, ...). When enabled, the original name's nationality is detected from the embedded nationality name lists (e.g. Arab, French, Spanish, German, Russian, Turkish, ...) and the fake name is generated from the very same nationality. Nationality lists are gender-separated, so a detected male name is replaced by a male name of the same nationality and vice versa.
This feature is only supported for the English language (
language== "en"). For any other language it is automatically disabled regardless of the parameter value. If the nationality of the original name cannot be detected, the obfuscation falls back to the regular behavior (gender-aware if genderAwareness is enabled, otherwise the default faker lists).If value is true, it might decrease performance. Default: False
- Definition Classes
- BaseDeidParams
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
val
obfuscateDate: BooleanParam
When mode=="obfuscate" whether to obfuscate dates or not.
When mode=="obfuscate" whether to obfuscate dates or not. This param helps in consistency to make dateFormats more visible. When setting to
true, make sure dateFormats param fits the needs. If the value is true and obfuscation is failed, then unnormalizedDateMode will be activated. When setting to 'false', then the date will be masked to <DATE>. Default: false- Definition Classes
- BaseDeidParams
-
def
obfuscateDateEntity(wordToReplace: String): String
- Attributes
- protected
- Definition Classes
- BaseFhirDeIdentification
-
def
obfuscateEntity(wordToReplace: String, entityClass: String, namePartsMemory: Map[String, String]): String
- Attributes
- protected
- Definition Classes
- BaseFhirDeIdentification
-
def
obfuscateNameEntity(originalName: String, keepTextSize: Boolean, lengthDeviation: Int, namePartsMemory: Map[String, String], documentID: Option[String] = None): String
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
val
obfuscateRefSource: Param[String]
The source of obfuscation to obfuscate the entities.
The source of obfuscation to obfuscate the entities. The values ar the following: 'file': Takes the entities from the obfuscatorRefFile 'faker': Takes the entities from the Faker module 'both': Takes the entities from the obfuscatorRefFile and the faker module randomly.
- Definition Classes
- BaseDeidParams
-
def
obfuscateZIP(wordToReplace: String): String
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
val
obfuscateZipByHipaa: BooleanParam
Whether to apply HIPAA Safe Harbor ZIP code obfuscation rules.
Whether to apply HIPAA Safe Harbor ZIP code obfuscation rules.
When enabled (
true), ZIP/ZIP+4 obfuscation follows the HIPAA Safe Harbor guidance:- The algorithm extracts the first five digits from the input (accepting formats like "12345", "12345-6789", "123456789" and tolerant forms).
2. If the first three-digit ZIP prefix is in the HIPAA restricted list (the 17 prefixes derived from 2000 Census data),
the ZIP MUST be suppressed to the canonical value
"000**". 3. Otherwise, the ZIP is generalized to the first three digits followed by"**"(i.e.XXX**). The +4 portion will be masked with asterisks if present.
When disabled (
false), HIPAA-specific ZIP obfuscation is not applied and the component's default/custom ZIP obfuscation is used instead.Implementation notes and cautions:
- The restricted 3-digit list (e.g. "036", "059", "063", ...) is historically based on Census 2000 ZCTA data.
- The implementation should handle malformed or missing inputs defensively; typically inputs that do not
contain at least five digits should be suppressed (e.g. return
"000**"). - See HHS guidance for full de-identification context: https://www.hhs.gov/hipaa/for-professionals/special-topics/de-identification/index.html
- Definition Classes
- BaseDeidParams
- The algorithm extracts the first five digits from the input (accepting formats like "12345", "12345-6789", "123456789" and tolerant forms).
2. If the first three-digit ZIP prefix is in the HIPAA restricted list (the 17 prefixes derived from 2000 Census data),
the ZIP MUST be suppressed to the canonical value
-
val
obfuscateZipKeepDigits: IntParam
Number of leading ZIP code digits to preserve when applying HIPAA-based ZIP obfuscation.
Number of leading ZIP code digits to preserve when applying HIPAA-based ZIP obfuscation. This parameter is only effective when obfuscateZipByHipaa is enabled.
Behavior:
- Preserves the first
valuedigits of the ZIP code. - Masks all remaining digits (including the ZIP+4 segment, if present) with asterisks (
*). - Default: 3
Examples:
- 12345 → 123**
- If the preserved digit count is set to 2: 12345 → 12***
This setting overrides the default HIPAA Safe Harbor ZIP generalization pattern (
XXX**) by allowing clients to customize how many digits remain unmasked under expert-determination requirements.- Definition Classes
- BaseDeidParams
- Preserves the first
-
val
obfuscationEquivalents: StructFeature[Array[StaticObfuscationEntity]]
variant-to-canonical entity mappings to ensure consistent obfuscation.
variant-to-canonical entity mappings to ensure consistent obfuscation.
This method allows you to define equivalence rules for entity variants that should be obfuscated the same way. For example, the names "Alex" and "Alexander" will always be mapped to the same obfuscated value if they are linked to the same canonical form.
It accepts an array of string triplets, where each triplet defines:
- variant: A non-standard, short, or alternative form of a value (e.g., "Alex")
- entityType: The type of the entity (e.g., "NAME", "STATE", "COUNTRY")
- canonical: The standardized form all variants map to (e.g., "Alexander")
variantandentityTypecomparisons are case-insensitive during processing.This is especially useful in de-identification tasks to ensure consistent replacement of semantically identical values. It also allows cross-variant normalization across different occurrences of sensitive data.
- Definition Classes
- BaseDeidParams
-
def
onWrite(path: String, spark: SparkSession): Unit
- Attributes
- protected
- Definition Classes
- ParamsAndFeaturesWritable
-
final
val
outputCol: Param[String]
- Attributes
- protected
- Definition Classes
- HasOutputAnnotationCol
-
lazy val
params: Array[Param[_]]
- Definition Classes
- Params
-
def
preventDateToMask(entityClass: String): Unit
- Attributes
- protected
- Definition Classes
- BaseFhirDeIdentification
-
lazy val
randomDateFormat: String
- Attributes
- protected
- Definition Classes
- BaseDeidParams
-
val
region: Param[String]
With this property, you can select particular dateFormats.
With this property, you can select particular dateFormats. This property is especially used when obfuscating dates. You can decide whether the first part of 11/11/2023 is a day or the second part is a day when obfuscating dates.
- The values are following:
- 'eu' for European Union
- 'us' for USA
- Definition Classes
- BaseDeidParams
-
val
sameLengthFormattedEntities: StringArrayParam
List of formatted entities to generate the same length outputs as original ones during obfuscation.
List of formatted entities to generate the same length outputs as original ones during obfuscation. The supported and default formatted entities are: "phone", "fax", "contact," "id", "idnum", "bioid", "medicalrecord", "zip", "vin", "ssn", "dln", "plate", "license", "IRS", "CFN", "account".
- Definition Classes
- BaseDeidParams
-
def
save(path: String): Unit
- Definition Classes
- MLWritable
- Annotations
- @Since( "1.6.0" ) @throws( ... )
-
val
seed: IntParam
It is the seed to select the entities on obfuscate mode.
It is the seed to select the entities on obfuscate mode. With the seed, you can reply to an execution several times with the same output.
- Definition Classes
- BaseDeidParams
-
def
selectFakeFromAllFakes(wordToReplace: String, entityClass: String, maskedEntity: String, allFakes: Seq[String], documentID: Option[String] = None): String
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
val
selectiveObfuscateRefSource: MapFeature[String, String]
A map of entity names to their obfuscation modes.
A map of entity names to their obfuscation modes. This is used to selectively apply different obfuscation methods to specific entities. The keys are entity names and the values are the obfuscation sources. If an entity is not specified in this map, the obfuscateRefSource param is used to determine the obfuscation source.
- Definition Classes
- BaseDeidParams
val selectiveSources = Map( "PHONE" -> "file", "EMAIL" -> "faker", "NAME" -> "faker", "ADDRESS" -> "both" )
Example: -
val
selectiveObfuscationModes: StructFeature[Map[String, Array[String]]]
The dictionary of modes to enable multi-mode deidentification.
The dictionary of modes to enable multi-mode deidentification.
- 'obfuscate': Replace the values with random values.
- 'mask_same_length_chars': Replace the name with the asterix with same length minus two plus brackets on both end.
- 'mask_entity_labels': Replace the values with the entity value.
- 'mask_fixed_length_chars': Replace the name with the asterix with fixed length. You can also invoke "setFixedMaskLength()"
- 'mask_entity_labels_without_brackets': Replace the values with the entity value without brackets.
- 'mask_same_length_chars_without_brackets': Replace the name with the asterix with same length without brackets.
- 'skip': Skip the entities (intact)
The entities which have not been given in dictionary will deidentify according to setMode()
- Definition Classes
- BaseDeidParams
-
def
set[T](feature: StructFeature[T], value: T): Hl7v2DeIdentification.this.type
- Attributes
- protected
- Definition Classes
- HasFeatures
-
def
set[K, V](feature: MapFeature[K, V], value: Map[K, V]): Hl7v2DeIdentification.this.type
- Attributes
- protected
- Definition Classes
- HasFeatures
-
def
set[T](feature: SetFeature[T], value: Set[T]): Hl7v2DeIdentification.this.type
- Attributes
- protected
- Definition Classes
- HasFeatures
-
def
set[T](feature: ArrayFeature[T], value: Array[T]): Hl7v2DeIdentification.this.type
- Attributes
- protected
- Definition Classes
- HasFeatures
-
final
def
set(paramPair: ParamPair[_]): Hl7v2DeIdentification.this.type
- Attributes
- protected
- Definition Classes
- Params
-
final
def
set(param: String, value: Any): Hl7v2DeIdentification.this.type
- Attributes
- protected
- Definition Classes
- Params
-
final
def
set[T](param: Param[T], value: T): Hl7v2DeIdentification.this.type
- Definition Classes
- Params
-
def
setAdditionalDateFormats(formats: Array[String]): Hl7v2DeIdentification.this.type
Sets additionalDateFormats param
Sets additionalDateFormats param
- Definition Classes
- BaseDeidParams
-
def
setAgeRanges(mode: Array[Int]): Hl7v2DeIdentification.this.type
List of integers specifying limits of the age groups to preserve during obfuscation
List of integers specifying limits of the age groups to preserve during obfuscation
- Definition Classes
- BaseDeidParams
-
def
setAgeRangesByHipaa(value: Boolean): Hl7v2DeIdentification.this.type
Sets whether to obfuscate ages based on HIPAA (Health Insurance Portability and Accountability Act) Privacy Rule.
Sets whether to obfuscate ages based on HIPAA (Health Insurance Portability and Accountability Act) Privacy Rule.
The HIPAA Privacy Rule mandates that ages from patients older than 90 years must be obfuscated, while age for patients 90 years or younger can remain unchanged.
- value
If true, age entities larger than 90 will be obfuscated as per HIPAA Privacy Rule, the others will remain unchanged. If false, ageRanges parameter is valid. Default: false.
- Definition Classes
- BaseDeidParams
-
def
setBlackListEntities(value: Array[String]): Hl7v2DeIdentification.this.type
blackListEntities param is not supported in FhirDeIdentification.
blackListEntities param is not supported in FhirDeIdentification. Please use mappingRules instead.
- Definition Classes
- BaseFhirDeIdentification → BaseDeidParams
- Exceptions thrown
-
def
setConsistentAcrossNameParts(value: Boolean): Hl7v2DeIdentification.this.type
Sets the value of consistentAcrossNameParts.
Sets the value of consistentAcrossNameParts.
- value
Boolean flag to enforce consistency across name parts
- returns
this instance
- Definition Classes
- BaseDeidParams
-
def
setCountryObfuscation(value: Boolean): Hl7v2DeIdentification.this.type
countryObfuscation param is not supported in FhirDeIdentification.
countryObfuscation param is not supported in FhirDeIdentification. Please use mappingRules instead.
- Definition Classes
- BaseFhirDeIdentification → BaseDeidParams
- Exceptions thrown
-
def
setCustomFakers(value: HashMap[String, List[String]]): Hl7v2DeIdentification.this.type
- Definition Classes
- LightDeIdentificationParams
-
def
setCustomFakers(value: Map[String, Array[String]]): Hl7v2DeIdentification.this.type
Sets the value of customFakers.
Sets the value of customFakers. The dictionary of custom fakers to specify the obfuscation terms for the entities. You can specify the entity and the terms to be used for obfuscation.
Example:
new LightDeIdentification() .setInputCols(Array("ner_chunk", "sentence")).setOutputCol("dei") .setMode("obfuscate") .setObfuscateRefSource("custom") .setCustomFakers(Map( "NAME" -> Array("George", "Taylor"), "SCHOOL" -> Array("Oxford", "Harvard"), "city" -> Array("ROMA") ))
- Definition Classes
- LightDeIdentificationParams
-
def
setDateEntities(value: Array[String]): Hl7v2DeIdentification.this.type
Sets the value of dateEntities.
Sets the value of dateEntities. Default: Array("DATE", "DOB", "DOD", "EFFDATE", "FISCAL_YEAR")
- Definition Classes
- BaseDeidParams
-
def
setDateFormats(s: Array[String]): Hl7v2DeIdentification.this.type
Format of dates to displace
Format of dates to displace
- Definition Classes
- BaseDeidParams
-
def
setDateToYear(s: Boolean): Hl7v2DeIdentification.this.type
Sets whether dates must be converted to years.
Sets whether dates must be converted to years.
- Definition Classes
- BaseDeidParams
-
def
setDateToYearEntities(value: Array[String]): Hl7v2DeIdentification.this.type
Sets the value of dateToYearEntities.
Sets the value of dateToYearEntities. Default: Array()
- Definition Classes
- BaseDeidParams
-
def
setDays(k: Int): Hl7v2DeIdentification.this.type
Number of days to obfuscate the dates by displacement.
Number of days to obfuscate the dates by displacement. If not provided a random integer between 1 and 60 will be used
- Definition Classes
- BaseDeidParams
-
def
setDefault[T](feature: StructFeature[T], value: () ⇒ T): Hl7v2DeIdentification.this.type
- Attributes
- protected
- Definition Classes
- HasFeatures
-
def
setDefault[K, V](feature: MapFeature[K, V], value: () ⇒ Map[K, V]): Hl7v2DeIdentification.this.type
- Attributes
- protected
- Definition Classes
- HasFeatures
-
def
setDefault[T](feature: SetFeature[T], value: () ⇒ Set[T]): Hl7v2DeIdentification.this.type
- Attributes
- protected
- Definition Classes
- HasFeatures
-
def
setDefault[T](feature: ArrayFeature[T], value: () ⇒ Array[T]): Hl7v2DeIdentification.this.type
- Attributes
- protected
- Definition Classes
- HasFeatures
-
final
def
setDefault(paramPairs: ParamPair[_]*): Hl7v2DeIdentification.this.type
- Attributes
- protected
- Definition Classes
- Params
-
final
def
setDefault[T](param: Param[T], value: T): Hl7v2DeIdentification.this.type
- Attributes
- protected[org.apache.spark.ml]
- Definition Classes
- Params
-
def
setDeidMarkers(markers: (String, String)): Hl7v2DeIdentification.this.type
Sets the tuple of markers to wrap the deidentified entities in the output text.
Sets the tuple of markers to wrap the deidentified entities in the output text. The first element is the prefix marker and the second element is the suffix marker. For example, if the markers are set to ("<DEID>", "</DEID>"), then an fake like "John Doe" would be transformed to "<DEID>John Doe</DEID>" in the deidentified text.
Defaults to ("", "") which means no markers will be added.
- Definition Classes
- BaseDeidParams
-
def
setEnableDefaultObfuscationEquivalents(value: Boolean): Hl7v2DeIdentification.this.type
Sets whether to enable default obfuscation equivalents for common entities.
Sets whether to enable default obfuscation equivalents for common entities. This parameter allows the system to automatically include a set of predefined common English name equivalents. Default: false
- Definition Classes
- BaseDeidParams
-
def
setFakerLengthOffset(value: Int): Hl7v2DeIdentification.this.type
Sets fakerLengthOffset param
Sets fakerLengthOffset param
- Definition Classes
- BaseDeidParams
-
def
setFixedMaskLength(value: Int): Hl7v2DeIdentification.this.type
Sets the value of fixedMaskLength.
Sets the value of fixedMaskLength. This is the length of the masking sequence that will be used when the 'fixed_length_chars' masking policy is selected.
- Definition Classes
- MaskingParams
-
def
setFreeTextPaths(paths: Array[String]): Hl7v2DeIdentification.this.type
Set HL7 v2 paths to free-text fields for de-identification.
-
def
setGenderAwareness(value: Boolean): Hl7v2DeIdentification.this.type
Whether to use gender-aware names or not during obfuscation.
Whether to use gender-aware names or not during obfuscation. This param effects only names. If value is true, it might decrease performance. Default: False
- Definition Classes
- BaseDeidParams
-
def
setGeoConsistency(value: Boolean): Hl7v2DeIdentification.this.type
geoConsistency param is not supported in FhirDeIdentification.
geoConsistency param is not supported in FhirDeIdentification.
- Definition Classes
- BaseFhirDeIdentification → BaseDeidParams
- Exceptions thrown
-
def
setIdBasedObfuscation(value: Boolean): Hl7v2DeIdentification.this.type
Sets whether to make obfuscation depend on the document ID.
Sets whether to make obfuscation depend on the document ID. Currently only valid for name-related entities. Default: False
- Definition Classes
- BaseDeidParams
-
def
setInputCol(value: String): Hl7v2DeIdentification.this.type
Set the input column name.
Set the input column name. The input column should contain the FHIR string.
- Definition Classes
- BaseFhirDeIdentification
-
def
setIsRandomDateDisplacement(s: Boolean): Hl7v2DeIdentification.this.type
Use a random displacement days in dates entities,that random number is based on the DeIdentificationParams.seed If true use random displacement days in dates entities, if false use the DeIdentificationParams.days The default value is false.
Use a random displacement days in dates entities,that random number is based on the DeIdentificationParams.seed If true use random displacement days in dates entities, if false use the DeIdentificationParams.days The default value is false.
- Definition Classes
- BaseDeidParams
-
def
setKeepMonth(value: Boolean): Hl7v2DeIdentification.this.type
Sets whether to keep the month intact when obfuscating date entities.
Sets whether to keep the month intact when obfuscating date entities. If true, the month will remain unchanged during the obfuscation process. If false, the month will be modified along with the year and day. Default: false.
- Definition Classes
- BaseDeidParams
-
def
setKeepTextSizeForObfuscation(value: Boolean): Hl7v2DeIdentification.this.type
Sets keepTextSizeForObfuscation param
Sets keepTextSizeForObfuscation param
- Definition Classes
- BaseDeidParams
-
def
setKeepYear(value: Boolean): Hl7v2DeIdentification.this.type
Sets whether to keep the year intact when obfuscating date entities.
Sets whether to keep the year intact when obfuscating date entities. If true, the year will remain unchanged during the obfuscation process. If false, the year will be modified along with the month and day. Default: false.
- Definition Classes
- BaseDeidParams
-
def
setLanguage(s: String): Hl7v2DeIdentification.this.type
The language used to select the regex file and some faker entities.
The language used to select the regex file and some faker entities. 'en'(English),'de'(German), 'es'(Spanish), 'fr'(French), 'ar'(Arabic) or 'ro'(Romanian). Default:'en'
- Definition Classes
- BaseDeidParams
-
def
setMappingRules(value: HashMap[String, String]): Hl7v2DeIdentification.this.type
- Definition Classes
- BaseFhirDeIdentification
-
def
setMappingRules(value: Map[String, String]): Hl7v2DeIdentification.this.type
Sets FHIR field de-identification rules for primitive type obfuscation.
Sets FHIR field de-identification rules for primitive type obfuscation.
Overview
Defines how specific FHIR elements should be de-identified using FHIR Path syntax. Supports all FHIR primitive types with built-in obfuscation strategies.
Rule Format
Map( "ResourceType.field.path" -> "SupportedEntityClass", )
- value
A mapping between FHIR paths and target primitive types. Keys must use standard FHIR Path notation (dot-delimited). Values must be one of the supported de-identification entity classes or given as a custom list.
- Definition Classes
- BaseFhirDeIdentification
Basic Usage
new FhirDeIdentification() .setMappingRules(Map( "Patient.birthDate" -> "Date", "Patient.name.given" -> "Name", "Patient.telecom.value" -> "Email", "Patient.address.city" -> "City", ))
- Exceptions thrown
If:
- Unsupported primitive type provided
- Malformed FHIR path detected
- Non-primitive field targeted
- Note
Important Constraints: 1. Paths are case-sensitive and must match FHIR element names exactly 2. Array elements should use standard FHIR Path syntax (e.g.,
Patient.name.given) 3. Only primitive types are supported for de-identification- See also
Example: -
def
setMaskingPolicy(value: String): Hl7v2DeIdentification.this.type
Select the masking policy:
Select the masking policy:
- 'entity_labels': Replace the values with the entity value.
- 'same_length_chars': Replace the name with the asterix with same length minus two plus brackets on both end.If the entity is less than 3 chars (like Jo, or 5), we can just use asterix without brackets.
- 'fixed_length_chars': Replace the obfuscated entity with a masking sequence composed of a fixed number of asterisk.
- 'entity_labels_without_brackets': Replace the values with the entity value without brackets.
- 'same_length_chars_without_brackets': Replace the name with the asterix with same length without brackets.
- Default: 'entity_labels'
- Definition Classes
- MaskingParams
-
def
setMaxRandomDisplacementDays(value: Int): Hl7v2DeIdentification.this.type
Sets maxRandomDisplacementDays param
Sets maxRandomDisplacementDays param
- Definition Classes
- BaseDeidParams
-
def
setMinYear(s: Int): Hl7v2DeIdentification.this.type
Sets the minimum year to use when converting date to year.
Sets the minimum year to use when converting date to year.
- Definition Classes
- BaseDeidParams
-
def
setMode(m: String): Hl7v2DeIdentification.this.type
Mode for Anonymizer ['mask'|'obfuscate'].
Mode for Anonymizer ['mask'|'obfuscate']. Default: 'mask'
- Mask mode: The entities will be replaced by their entity types.
- Obfuscate mode: The entity is replaced by an obfuscator's term.
- Definition Classes
- BaseDeidParams
Given the following text: "David Hale visited EEUU a couple of years ago"
- Mask mode: "
<PERSON>visited<COUNTRY>a couple of years ago" - Obfuscate mode: "Bryan Johnson visited Japan a couple of years ago"
- Mask mode: "
Example: -
def
setNationalityAwareness(value: Boolean): Hl7v2DeIdentification.this.type
Whether to use nationality-aware names or not during obfuscation.
Whether to use nationality-aware names or not during obfuscation. This param affects only names. Only supported for the English language. If value is true, it might decrease performance. Default: False
- Definition Classes
- BaseDeidParams
-
def
setObfuscateDate(s: Boolean): Hl7v2DeIdentification.this.type
obfuscateDate param is not supported in FhirDeIdentification.
obfuscateDate param is not supported in FhirDeIdentification. It is always true.
- Definition Classes
- BaseFhirDeIdentification → BaseDeidParams
- Exceptions thrown
-
def
setObfuscateRefSource(s: String): Hl7v2DeIdentification.this.type
The source of obfuscation to obfuscate the entities.
The source of obfuscation to obfuscate the entities. The values are the following: 'file': Takes the fakes from the obfuscatorRefFile 'faker': Takes the fakes from the Faker module 'both': Takes the fakes from the obfuscatorRefFile and the faker module randomly.
- Definition Classes
- BaseDeidParams
-
def
setObfuscateZipByHipaa(value: Boolean): Hl7v2DeIdentification.this.type
Sets whether HIPAA Safe Harbor ZIP obfuscation rules should be applied.
Sets whether HIPAA Safe Harbor ZIP obfuscation rules should be applied.
Behavior:
true: Apply HIPAA rules as described in obfuscateZipByHipaa: extract five digits, map restricted 3-digit prefixes to \"000**\", otherwise generalize toXXX**. The +4 portion will be masked with asterisks if present.false: Do **not** apply HIPAA Safe Harbor behavior; use the component's default/custom ZIP obfuscation instead.
Implementation & defaults:
- Default:
false(HIPAA behavior is opt-in). If you want HIPAA Safe Harbor behavior by default, change the default value where the parameter is declared.
- Definition Classes
- BaseDeidParams
-
def
setObfuscateZipKeepDigits(value: Int): Hl7v2DeIdentification.this.type
Sets the number of leading ZIP code digits to preserve when applying HIPAA-based ZIP obfuscation.
Sets the number of leading ZIP code digits to preserve when applying HIPAA-based ZIP obfuscation. This parameter is only effective when obfuscateZipByHipaa is enabled.
Behavior:
- Preserves the first
valuedigits of the ZIP code. - Masks all remaining digits (including the ZIP+4 segment, if present) with asterisks (
*). - Default: 3
Examples:
- 12345 → 123**
- If
value = 2: 12345 → 12***
This setting overrides the default HIPAA Safe Harbor ZIP generalization pattern (
XXX**) by allowing clients to customize how many digits remain unmasked under expert-determination requirements.- Definition Classes
- BaseDeidParams
- Preserves the first
-
def
setObfuscationEquivalents(equivalents: ArrayList[ArrayList[String]]): Hl7v2DeIdentification.this.type
- Definition Classes
- BaseDeidParams
-
def
setObfuscationEquivalents(equivalents: Array[Array[String]]): Hl7v2DeIdentification.this.type
Sets variant-to-canonical entity mappings to ensure consistent obfuscation.
Sets variant-to-canonical entity mappings to ensure consistent obfuscation.
This method allows you to define equivalence rules for entity variants that should be obfuscated the same way. For example, the names "Alex" and "Alexander" will always be mapped to the same obfuscated value if they are linked to the same canonical form.
It accepts an array of string triplets, where each triplet defines:
- variant: A non-standard, short, or alternative form of a value (e.g., "Alex")
- entityType: The type of the entity (e.g., "NAME", "STATE", "COUNTRY")
- canonical: The standardized form all variants map to (e.g., "Alexander")
variantandentityTypecomparisons are case-insensitive during processing.This is especially useful in de-identification tasks to ensure consistent replacement of semantically identical values. It also allows cross-variant normalization across different occurrences of sensitive data.
Example
val equivalents = Array( Array("Alex", "NAME", "Alexander"), Array("Rob", "NAME", "Robert"), Array("CA", "STATE", "California"), Array("Calif.", "STATE", "California") ) myDeidTransformer.setObfuscationEquivalents(equivalents)
- equivalents
Array of [variant, entityType, canonical] entries.
- Definition Classes
- BaseDeidParams
- Exceptions thrown
IllegalArgumentExceptionif any entry does not have exactly 3 elements.
-
def
setObfuscationEquivalents(equivalents: Array[StaticObfuscationEntity]): Hl7v2DeIdentification.this.type
Sets obfuscationEquivalents param.
Sets obfuscationEquivalents param.
- Definition Classes
- BaseDeidParams
-
final
def
setOutputCol(value: String): Hl7v2DeIdentification.this.type
- Definition Classes
- HasOutputAnnotationCol
- def setPipeline(spark: SparkSession, pipelineModel: PipelineModel, outputCol: String): Hl7v2DeIdentification.this.type
-
def
setPipeline(spark: SparkSession, pipeline: PretrainedPipeline, outputCol: String): Hl7v2DeIdentification.this.type
Set the de-identification pipeline used for free-text fields (see freeTextPaths).
-
def
setRegion(value: String): Hl7v2DeIdentification.this.type
region param is not supported in FhirDeIdentification.
region param is not supported in FhirDeIdentification. Please use dateFormats instead.
- Definition Classes
- BaseFhirDeIdentification → BaseDeidParams
- Exceptions thrown
-
def
setSameLengthFormattedEntities(entities: Array[String]): Hl7v2DeIdentification.this.type
List of formatted entities to generate the same length outputs as original ones during obfuscation.
List of formatted entities to generate the same length outputs as original ones during obfuscation. The supported and default formatted entities are: PHONE, FAX, CONTACT, ID, IDNUM, BIOID, MEDICALRECORD, ZIP, VIN, SSN, DLN, LICENSE, PLATE, IRS, CFN, ACCOUNT.
- Definition Classes
- BaseDeidParams
-
def
setSeed(s: Int): Hl7v2DeIdentification.this.type
It is the seed to select the entities on obfuscate mode.
It is the seed to select the entities on obfuscate mode. With the seed, you can reply to an execution several times with the same output.
- Definition Classes
- BaseDeidParams
-
def
setSelectiveObfuscateRefSource(value: HashMap[String, String]): Hl7v2DeIdentification.this.type
- Definition Classes
- BaseDeidParams
-
def
setSelectiveObfuscateRefSource(value: Map[String, String]): Hl7v2DeIdentification.this.type
Sets the value of selectiveObfuscateRefSource.
Sets the value of selectiveObfuscateRefSource. This is used to selectively apply different obfuscation methods to specific entities. The keys are entity names and the values are the obfuscation sources. If an entity is not specified in this map, the obfuscateRefSource param is used to determine the obfuscation method. The values can be: - 'file': Takes the fakes from the file. - 'faker': Takes the fakes from the embedded faker module. - 'both': Takes the fakes from the file and the faker module.
- Definition Classes
- BaseDeidParams
val modes = Map( "PHONE" -> "file", "EMAIL" -> "faker", "NAME" -> "faker", "ADDRESS" -> "both" )
Example: -
def
setSelectiveObfuscationModes(value: HashMap[String, List[String]]): Hl7v2DeIdentification.this.type
- Definition Classes
- BaseDeidParams
-
def
setSelectiveObfuscationModes(value: Map[String, Array[String]]): Hl7v2DeIdentification.this.type
Sets the value of selectiveObfuscationModes.
Sets the value of selectiveObfuscationModes. The dictionary of modes to enable multi-mode deidentification.
- 'obfuscate': Replace the values with random values.
- 'mask_same_length_chars': Replace the name with the asterix with same length minus two plus brackets on both end.
- 'mask_entity_labels': Replace the values with the entity value.
- 'mask_fixed_length_chars': Replace the name with the asterix with fixed length. You should also invoke "setFixedMaskLength()"
- 'mask_entity_labels_without_brackets': Replace the values with the entity value without brackets.
- 'mask_same_length_chars_without_brackets': Replace the name with the asterix with same length without brackets.
- 'skip': Skip the entities (intact)
The entities which have not been given in dictionary will deidentify according to setMode()
Example:
deidAnnotator .setMode("mask") .setSelectiveObfuscationModes(Map( "OBFUSCATE" -> Array("PHONE", "email"), "mask_entity_labels" -> Array("NAME", "CITY"), "skip" -> Array("id", "idnum"), "mask_same_length_chars" -> Array("fax"), "mask_fixed_length_chars" -> Array("zip") )) .setFixedMaskLength(4)
- Definition Classes
- BaseDeidParams
-
def
setStaticObfuscationPairs(pairs: ArrayList[ArrayList[String]]): Hl7v2DeIdentification.this.type
- Definition Classes
- BaseDeidParams
-
def
setStaticObfuscationPairs(pairs: Array[StaticObfuscationEntity]): Hl7v2DeIdentification.this.type
- Definition Classes
- BaseDeidParams
-
def
setStaticObfuscationPairs(pairs: Array[Array[String]]): Hl7v2DeIdentification.this.type
Sets the static obfuscation pairs.
Sets the static obfuscation pairs. Each pair should contain three elements: original, entity type, and fake. The pairs must have exactly 3 elements: [original, entityType, fake].
- pairs
An array of arrays containing the static obfuscation pairs.
- Definition Classes
- BaseDeidParams
-
def
setUnnormalizedDateMode(mode: String): Hl7v2DeIdentification.this.type
The mode to use if the date is not formatted.
The mode to use if the date is not formatted. Options: [mask, obfuscate, skip] Default: obfuscate
- Definition Classes
- BaseDeidParams
-
def
setUseShiftDays(s: Boolean): Hl7v2DeIdentification.this.type
useShiftDays param is not supported in FhirDeIdentification.
useShiftDays param is not supported in FhirDeIdentification. Please use days instead.
- Definition Classes
- BaseFhirDeIdentification → BaseDeidParams
- Exceptions thrown
-
def
shouldUseConsistentNameParts(entityClass: String): Boolean
- Attributes
- protected
- Definition Classes
- DeidModelParams
-
val
staticObfuscationPairs: StructFeature[Array[StaticObfuscationEntity]]
A resource containing static obfuscation pairs.
A resource containing static obfuscation pairs. Each pair should contain three elements: original, entity type, and fake.
- Definition Classes
- BaseDeidParams
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
final
def
throwUnSupportedError(): Nothing
- Attributes
- protected
- Definition Classes
- BaseFhirDeIdentification
-
def
toString(): String
- Definition Classes
- Identifiable → AnyRef → Any
-
def
transform(dataset: Dataset[_]): DataFrame
- Definition Classes
- BaseFhirDeIdentification → Transformer
-
def
transform(dataset: Dataset[_], paramMap: ParamMap): DataFrame
- Definition Classes
- Transformer
- Annotations
- @Since( "2.0.0" )
-
def
transform(dataset: Dataset[_], firstParamPair: ParamPair[_], otherParamPairs: ParamPair[_]*): DataFrame
- Definition Classes
- Transformer
- Annotations
- @Since( "2.0.0" ) @varargs()
-
def
transformSchema(schema: StructType): StructType
- Definition Classes
- BaseFhirDeIdentification → PipelineStage
-
def
transformSchema(schema: StructType, logging: Boolean): StructType
- Attributes
- protected
- Definition Classes
- PipelineStage
- Annotations
- @DeveloperApi()
-
val
uid: String
- Definition Classes
- Hl7v2DeIdentification → Identifiable
-
val
unnormalizedDateMode: Param[String]
The mode to use if the date is not formatted.
The mode to use if the date is not formatted. Options: [mask, obfuscate, skip] Default: obfuscate
- Definition Classes
- BaseDeidParams
-
val
useShiftDays: BooleanParam
Whether to use the random shift day when the document has this in its metadata.
Whether to use the random shift day when the document has this in its metadata. DocumentHashCoder can create 'dateshift' based on the document. Default: false
- Definition Classes
- BaseDeidParams
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
def
write: MLWriter
- Definition Classes
- ParamsAndFeaturesWritable → DefaultParamsWritable → MLWritable