Fuzzy matching for dummies

One really simple, yet really powerful feature we have implemented is a pseudo fuzzy matching for patient names.  Fuzzy matching allows you to return names that are ‘like’  another name. For example, if you don’t remember the spelling of a patient’s name, Orlowski, you would be able to guess Orlawski. By using published algorithms Nysiis, Soundex, Metaphone, etc., you can match names that are close in sound.

For example:

soundex(‘Orlowski’) == ‘o642’  == soundex(‘Orlawski’)

and

nysiis(‘Orlowski’) == ORLASC == nysiis(‘Orlawski’).

Keep in mind, full  ‘fuzzy matching’ often involves much more complicated algorithms and might be able to match patients based on combinations of factors like address or  birth date. But this fuzzy matching ‘for dummies’ is a good first step in solving the problem of minor typos.

When a chart is created (or last name updated), we pass the name through these algorithms and save the results with the chart. When we want to do fuzzy searching, all we have to do is pass the search term through the algorithms and search with the results.  Of course, these results are presented as approximate matches, and no guesses to the definite identity are made by this matching scheme.

Other fuzzy matching algorithms involve things like ‘edit distance’, where you measure how many changes to a word are required to get to another word. ‘Orlowski’ and ‘Orlawski’ have an edit distance of one. This algorithm requires much more processing time and storage space so we are happy with the solution we have now.

Tags: , , , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: