Hi,

Im on a bus right now, so I could not go through the mails properly yet. I
will try to come up with some sensible comments as soon as possible :-)
On 27 Feb 2012 20:22, "Burke Mamlin" <[email protected]> wrote:

> More specifically, we'd like to refactor 
> MatchResult.*getSimilarityScore(String
> demographic)*<https://source.openmrs.org/browse/Modules/patientmatching/src/org/regenstrief/linkage/MatchResult.java?r=25928&r=22126#to164>so
>  that it uses an interface instead of a switch statement to match values.
>
> For example:
>
> interface MatchSimilarityAlgorithm {
>   public String getName();
>   public double getMatchSimilarity(String val1, String val2);
> }
>
> then creating classes like:
>
> class ExactMatchSimilarity implements MatchSimilarityAlgorithm {
>   public String getName() {
>     return "Exact Match";
>   }
>   public double getMatchSimilarity(String val1, String val2) {
>     return StringMatch.getExactMatchSimilarity(val1, val2);
>   }
> }
>
> class LCSMatchSimiliarity implements MatchSimilarityAlgorithm {
>   public String getName() {
>     return "Longest Common Subsequence";
>   }
>   public double getMatchSimilarity(String val1, String val2) {
>     return StringMatch.getLCSMatchSimilarity(val1, val2);
>   }
> }
>
> etc...
>
> This would make algorithm a MatchSiimilarityAlgorithm instead of a String.
>  The switch statement in MatchResult.*getSimilarityScore(String)* can
> then be replaced with:
>
> return algorithm.getSimilarityScore(val1, val2);
>
> This would allow us to introduce new algorithms.  Of course, the UI would
> need some minor refactoring to use the MatchSimilarityAlgorithm.*getName()
> * method to get names of algoirthms.
>
> If those changes seem to bold at first, then a quicker step in the
> direction would be to introduce the interface, allow algorithm to be a
> class name, and refactor the last (default) case in the switch statement to
> something like:
>
> default:
>   try {
>     Class clazz = Class.forName(algorithm);
>     if (clazz instanceof MatchSimilarityAlgorithm)
>       return ((MatchSimilarityAlgorithm)algorithm)
>                .getSimilarityScore(val1, val2);
>   } catch (ClassNotFoundException e) {
>   return 0;
>
> This wouldn't fully customize algorithms, but would at least allow us to
> sneak in our own algorithms during matching.
>
> Cheers,
>
> -Burke
>
> On Mon, Feb 27, 2012 at 8:49 AM, Jeremy Keiper <[email protected]> wrote:
>
>> Suranga, James, Burke, Shaun, etc -
>>
>> AMPATH has a development-backed immediate interest in these custom column
>> definitions for acquiring and comparing attributes of patient data.  If
>> there is any way that this can be fitted into the current design, could we
>> get some direction on how it could work and whether the Patient Matching
>> Module authors would like to incorporate it to trunk or allow us to branch
>> it for those purposes?
>>
>> Thanks!
>>
>> Jeremy Keiper
>> OpenMRS Core Developer
>> AMPATH / IU-Kenya Support
>>
>>
>>
>> On Tue, Feb 21, 2012 at 10:00 PM, Rajib Sengupta <[email protected]>wrote:
>>
>>> Hello All,
>>> As new implementor of openMRS, I cannot resist, but to chime in this
>>> discussion.
>>>
>>> If the web UI of patient matching can be configurable,  it will be
>>> indeed a great feature. Primarily this will help implementation team which
>>> is low with pure developer resources and for implementations in new
>>> geographic regions where the patient matching can be based on different
>>> patient attributes, that is not available in the current ui, out of the box.
>>>
>>> Again, this is just our opinion and want to share it with the
>>> development team so that development items can be prioritized from an user
>>> usability perspective.
>>>
>>> Thanks,
>>> Rajib
>>>
>>>   *From:* Suranga Kasthurirathne <[email protected]>
>>> *To:* [email protected]
>>> *Sent:* Tuesday, February 21, 2012 12:21 PM
>>> *Subject:* Re: [OPENMRS-DEV] Latest improvements to the Patient
>>> Matching module
>>>
>>>
>>> Hi,
>>>
>>> I agree. Right now, the web based ui that you'll get by loading the
>>> module doesn't actually let you make use of the extensive (really really
>>> really extensive) functionality the patientmatching module can offer. If
>>> fact, sometimes I feel that the web ui is tying to hide its true
>>> awesomeness.
>>> If the web ui let you make use of all the extensive functionality that
>>> the module offers, it would be one of the top favorite of our modules.
>>> However that said, i'm not sure which of the two above mentioned efforts
>>> should get priority over the other. I'm OK with whatever the experts agree
>>> on :-)
>>>
>>>
>>> On Tue, Feb 21, 2012 at 11:24 AM, Darius Jazayeri <
>>> [email protected]> wrote:
>>>
>>> It certainly has potential as a GSoC project.
>>>
>>> That said, my main concern with the Patient Matching module has been
>>> that the UI is not easily approachable by anyone who hasn't built up some
>>> domain knowledge on patient matching. I believe this has been improved,
>>> though I'm not sure how much. Making it usable by an admin with only basic
>>> OpenMRS knowledge would be a higher priority for me. (Unless that's already
>>> been done!)
>>>
>>> -Darius
>>>
>>>
>>> On Mon, Feb 20, 2012 at 8:50 PM, Suranga Kasthurirathne <
>>> [email protected]> wrote:
>>>
>>>
>>> Hi,
>>>
>>> To the best of my knowledge, the patient Matching module provides
>>> multiple ways of reading in data (txt files, one or two databases)
>>> but doesn't really provide you with an interface for data columns.
>>> So right now, it seems to be that we really can't add derived columns
>>> like the ones you and Darius mentioned.
>>>
>>> However, it does provide an interface for Analyzers (which is comparable
>>> to algorithms), so users can write up their own analyzers if they wish to
>>> do so.
>>> I understand the functionality that you are talking about, and I realize
>>> that its an important and useful feature.
>>> Possibly, this will be easier to implement once the database changes are
>>> in.
>>>
>>> I will talk to James regarding this, and get his feedback on my
>>> comments....
>>>
>>> @Dr. Burke, @Darius, mmm.... does this sound like a good GSOC idea to
>>> you ? maybe Dr. Grannis will also be interested :-)
>>>
>>>
>>> Thanks and best regards,
>>> Suranga
>>>
>>>
>>>
>>> On Tue, Feb 21, 2012 at 5:44 AM, Darius Jazayeri <
>>> [email protected]> wrote:
>>>
>>> What Burke describes, with the ability to write those as groovy and
>>> store them in the DB would be pretty neat. :-)
>>>
>>> -Darius
>>>
>>>
>>> On Mon, Feb 20, 2012 at 2:08 PM, Burke Mamlin 
>>> <[email protected]>wrote:
>>>
>>> Suranga,
>>>
>>> Does the patient matching module provide interfaces for a data source
>>> columns and/or algorithms so implementations could define custom column(s)
>>> and/or custom comparison algorithm(s)?  For example, I'm imagining
>>> something like:
>>>
>>> interface DataSourceColumn {
>>>   public String name();
>>>   public String getValue(Patient patient);
>>> }
>>>
>>> interface Algorithm {
>>>   public String getName();
>>>   public float match(String a, String b);
>>> }
>>>
>>> Assuming the out-of-the-box patient demographics implement the
>>> DataSourceColumn interface, it would be easy to add new derived columns
>>> (e.g., a region-specific soundex algorithm, a column that concatenates all
>>> patient identifiers, or a column that combines latitude & longitude from
>>> address).  And assuming that "Exact Match" and other out-of-the-box
>>> comparison algorithms imlemented the Algorithm interface, then it would be
>>> easy to add new custom algorithms (e.g., matching GPS coordinates based on
>>> computed distance).
>>>
>>> Cheers,
>>>
>>> -Burke
>>>
>>> On Mon, Feb 20, 2012 at 3:15 AM, Suranga Kasthurirathne <
>>> [email protected]> wrote:
>>>
>>>
>>> Hi everyone,
>>>
>>> We have just committed some important changes to the patientMatching
>>> module <https://wiki.openmrs.org/display/docs/Patient+Matching+Module>.
>>>
>>> These changes are part of our efforts to move user generated patient
>>> matching report details from a flat file system to a database. We have not
>>> completed the entire effort, but have made a reasonable amount of
>>> progress. At this given moment, the enhancements we made will let you store
>>> user defined patient matching strategies in the database.  Efforts to store
>>> the entire user generated report in the database are still underway.
>>> Please note that following these changes, user defined strategies are
>>> now stored in database tables, and not in the existing config.xml file.
>>>
>>> However, do note that this effort is still at an experimental level, so
>>> do be careful if you decide to use the latest build.
>>>
>>> --
>>> On behalf of the PatientMatching team,
>>> Suranga
>>>
>>>  Click here to 
>>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
>>> OpenMRS Developers' mailing list
>>>
>>>
>>>  Click here to 
>>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
>>> OpenMRS Developers' mailing list
>>>
>>>
>>>   Click here to 
>>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
>>> OpenMRS Developers' mailing list
>>>
>>>
>>>
>>>
>>> --
>>> Best Regards,
>>>
>>> Suranga
>>>
>>>  Click here to 
>>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
>>> OpenMRS Developers' mailing list
>>>
>>>
>>>   Click here to 
>>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
>>> OpenMRS Developers' mailing list
>>>
>>>
>>>
>>>
>>> --
>>> Best Regards,
>>>
>>> Suranga
>>>
>>>  Click here to 
>>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
>>> OpenMRS Developers' mailing list
>>>
>>>
>>> ------------------------------
>>> Click here to 
>>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
>>> OpenMRS Developers' mailing list
>>>
>>
>>  ------------------------------
>> Click here to 
>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
>> OpenMRS Developers' mailing list
>>
>
> ------------------------------
> Click here to 
> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
> OpenMRS Developers' mailing list

_________________________________________

To unsubscribe from OpenMRS Developers' mailing list, send an e-mail to 
[email protected] with "SIGNOFF openmrs-devel-l" in the  body (not 
the subject) of your e-mail.

[mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l]

Reply via email to