Phonetic Search Parameters
Search Parameters named "phonetic" (e.g. the "phonetic" search parameter on the Patient resource) are indexed using the METAPHONE encoder by default. This can be changed by setting Phonetic Encoder in the FHIR Storage Module to a different value. The available encoders are listed below.
Phonetic indexing can also be added to any SearchParameter of type "string". Use the extension http://hapifhir.io/fhir/StructureDefinition/searchparameter-phonetic-encoder
to add a phonetic encoder to a SearchParameter. For example, you can create a Search Parameter with a Soundex encoder on Patient address line with the following SearchParameter definition.
{
"resourceType": "SearchParameter",
"extension": [ {
"url": "http://hapifhir.io/fhir/StructureDefinition/searchparameter-phonetic-encoder",
"valueString": "SOUNDEX"
} ],
"title": "Address Line Soundex",
"status": "active",
"code": "addressLineSoundex",
"base": [ "Patient" ],
"type": "string",
"expression": "Patient.address.line"
}
This will Soundex encode all address lines before storing them to the index and perform the same encoding on incoming search parameters to match the stored Soundex encoded indexes. The following phonetic encodings are supported:
NB: Some phonetic encoders (METAPHONE and DOUBLE_METAPHONE) allow specifying a max character length for more accurate results. To do so, add the max character limit after the encoder value.
The following (partial) json illustrates how to specify a METAPHONE string encoder with a max character limit of 5.
{
"resourceType": "SearchParameter",
"extension": [ {
"url": "http://hapifhir.io/fhir/StructureDefinition/searchparameter-phonetic-encoder",
"valueString": "METAPHONE(5)"
} ]
}
code | Description | Example |
---|---|---|
CAVERPHONE1 | Apache Caverphone1 | Gail = Gael, Gail != Gale, Thomas != Tom |
CAVERPHONE2 | Apache Caverphone2 | Gail = Gael, Gail = Gale, Thomas != Tom |
COLOGNE | Apache Cologne Phonetic | |
DOUBLE_METAPHONE | Apache Double Metaphone | Dury = Durie, Allsop = Allsob, Smith != Schmidt |
MATCH_RATING_APPROACH | Apache Match Rating Approach Encoder | |
METAPHONE | Apache Metaphone | Dury = Durie, Allsop != Allsob, Smith != Schmidt |
NYSIIS | Apache Nysiis | |
REFINED_SOUNDEX | Apache Refined Soundex | |
SOUNDEX | Apache Soundex | Jon = John, Thomas != Tom |
NUMERIC | Remove all non-numeric characters from the string before comparing. | 4169671111 = (416) 967-1111 |