Erik Horskotte created these links below at the request of one of the Early Adopters in reply to some questions about MPI algorithms.
The Wikipedia page on the Fellegi-Sunter matching algorithm:
http://en.wikipedia.org/wiki/Record_linkage
Here's the posting from Shaun's blog describing the OpenMRS patient
matching module -
http://doctorshaun.blogspot.com/2008/06/openmrs-patient-matching-module.html
The top of the patient matching module in the OpenMRS subversion
repository - http://svn.openmrs.org/openmrs-modules/patientmatching/
The top level Expectation Maximization analyzer class. This is the class
that computes the statistics for the Fellegi-Sunter matching algorithm
based on a MatchingConfig (blocking traits and which traits to analyze).
My current understanding is that the key output of this algorithm is a
table of estimated values of m (mu) and u per trait:
http://svn.openmrs.org/openmrs-modules/patientmatching/src/org/regenstrief/linkage/analysis/EMAnalyzer.java
The top level "find matching patients" class that uses the output of the
EM analyzer class (MatchingConfig) and a database of patients
(LinkDataSource) to find patients that match the supplied patient
(Record):
http://svn.openmrs.org/openmrs-modules/patientmatching/src/org/regenstrief/linkage/MatchFinder.java
The spring interceptor that intercepts OpenMRS createPatient,
updatePatient and findPatient operations and uses the recorded patient
matching configuration (and the output of the EMAnalyzer class) to find
matching patients:
http://svn.openmrs.org/openmrs-modules/patientmatching/src/org/openmrs/module/patientmatching/advice/PatientMatchingAdvice.java
The "analysis" window of the standalone analysis application that
actually runs the EM analysis (and other analysis tools as well):
http://svn.openmrs.org/openmrs-modules/patientmatching/src/org/regenstrief/linkage/gui/AnalysisPanel.java


