I call it "VirtualOptician."
It would be an application of some basic Artifical Intelligence technology to create software that would input the known facts about a patient, and then compute a specific lens (or frame and lens) selection.
I don't see that there is enough "juice" in it to provide the basis of a commercial enterprise or salable product. And my computer (an old Mac) is so far out of date that I don't see that I have the facility to experiment with this on my own. I think that you would need a Mac that can run MacOS X or a Windows 95/98/NT/XP computer to start a project like this.
I think that some of the expertise of a dispensing optician could be readily converted into software using the techniques of rule-based programming.
VirtualOptician would be the kind of computer program that is often referred to as an expert system.
Rule-based programming is one of the most commonly used techniques for developing expert systems. In this programming paradigm, rules are used to represent heuristics, or "rules of thumb," which specify a set of actions to be performed for a given situation. A rule is composed of an if portion and a then portion. The if portion of a rule is a series of patterns which specify the facts (or data) which cause the rule to be applicable. The process of matching facts to patterns is called pattern matching. The expert system tool provides a mechanism, called the inference engine, which automatically matches facts against patterns and determines which rules are applicable. The if portion of a rule can actually be thought of as the whenever portion of a rule since pattern matching always occurs whenever changes are made to facts. The then portion of a rule is the set of actions to be executed when the rule is applicable. The actions of applicable rules are executed when the inference engine is instructed to begin execution. The inference engine selects a rule and then the actions of the selected rule are executed (which may affect the list of applicable rules by adding or removing facts). The inference engine then selects another rule and executes its actions. This process continues until no applicable rules remain.
A "microscopic" and just about self-explanatory example:
IF patient_diagnosis IS hyperope OR myope
SET candidate_lens_database TO single_vision
IF patient_diagnosis IS presbyope
SET candidate_lens_database TO multifocal
CLIPS is freeware (freely available software) that supports rule-based programming. If you've ever written a computer program in "C", you can already see how my oh-so-brief example (above) of two (hugely simplified) dispensing rules could be translated into C code. My theory is that with CLIPS (or another software development tool of similar kind), it would be gynormously easier to develop an example of VirtualOptician using a carefully thought-out set of dispensing rules.
VirtualOptician could process any/all of the data that a dispensing optician has to deal with; for example:
M.D./O.D. data: diagnoses and new refraction data
age, sex, occupation, hobbies and recreations
relevant health issues
Current eyeglasses data
current Rx, lens type(s), lens material(s), coatings
sees internal stress pattern of lenses at all angles/distances when using poly
Frame measurement requirements
Lens and frame databases condensed from manufacturer's data
Practice specific database
Our preferred lens suppliers are ...
CLIPS Home Page: http://www.ghg.net/clips/CLIPS.html
CLIPS Related Web Locations: http://www.ghg.net/clips/OtherWeb.html
A ton of information here, for anyone who would consider taking up the VirtualOptician project.
Gensym - example of a proprietary rule-based programming engine
Putting a wrap on it ...
THAT, ..., (and your points are very well taken) is the reason why I think this would be an excellent course project for a student going into one of the 3 O's - provided that they are at the level in their curriculum where this kind of research would be appropriate for them to take up.
An interesting academic exercise that would more illustrate the problems associated with AI [artificial intelligence] in the real world than provide a tool to assist the eye care dweeb in lens selection. ALL programming is "rule-based", so there is nothing here to advance software engineering. The core issue would be the definition of the “rules” or algorithms and the quantification of those values. Cripes! We can’t even agree on a simple definition here on [our forum] - much less a common heuristic that all users could agree on and that would be valid in all cases.
Another one of my points (and again, with my out of date Mac, I can only suggest it, without being able to confirm any of it myself) is that with CLIPS (or another rule-based programming tool), it should be much easier to undertake this project, than it would be using the more commonly known approach of straightforward "C" language programming. With CLIPS (etc.), the uniquely optical part of the project could be isolated from all of the other general software problems that attend the development of any sizable computer program. Running the program with realistic input data and examining the output (lens or lens and frame selections) would be a way of confirming the validity of the optical expertise, as expressed in the "rules" database.
The project could also be taken up by an undergraduate level IT or computer engineering student. In that case, the focus would shift to the software side of the equation; for example, which of the various rule-based programming tools is actually the best one to use for this purpose? How many different kinds of information could be processed? Could they (for example) develop a practical way to process the same information that is used to create the OLA's yearly catalog of progressive lenses? And the optician's exact knowledge would move to the background: It would serve only as a realistic test case for proving the software technologies.
As I said at the very top (of the thread), I put this forward as an idea for a student project: WRT whether more of the optician's job should be automated ("streamlined" might be a better word), or whether this could be used to facilitate more of those online optical shops: I am not trying to forward any of those particular ideas.