Expert Systems are a branch of Artificial Intelligence. These systems try to capture knowledge of Experts via set of rules. Most of the rules are stated in natural language. But they need to be interpreted by rule engine therefore they are statements in the form of classic if-then-else.




This specific expert system will hold substances and patients. Every rule give an advice according to patient's attributes , which is stored in database.

For example:

 IF (PatientWeight < 50 AND PatientSex = Male AND DaysInTreatment = 0)
 IF (PatientWeight < 50 AND PatientSex = Male AND DaysInTreatment > 0)
 THEN SUBSTANCE_X = 20 +  DaysInTreatment *5

I have never designed such a system. Can you give me some starting pointers to read? Or Any advice?


In university, I took courses where we worked with, and then built our own (very simple) expert systems in Prolog. I can't think of an RDBMS implementation that would be easy, or elegant. Most of them would probably end up as an EAV schema (which would work - I've seen and used such systems, but they're not pretty). One of the first hits on google for "prolog expert system" is this: http://www.amzi.com/ExpertSystemsInProlog/ It looks long, but might be a good resource.

|improve this answer|||||

After reading FrustratedWithFormsDesigner's answer , I decided to go with executable script approach.

An Expert System consists of following parts:

  • The rule base or knowledge base
  • Inference Engine
  • User Interface

I decided to use powershell engine as Inference Engine. Therefore all rules in knowledge base are powershell scripts. Inference Engine provides , patient's details to script and takes output.

My GUI shows scripts. Allow users to test , update scripts.

It is in my opinion only reasonable approach for a arbitrary rule based approach. I have chosen this since users will more likely want to change rules.

Following part is not related to database design issues, therefore not completely related to this question.

I decided to use powershell due to following reasons:

  • It is scripting language
  • It is easily embeddable in C#.Net, project's programming language
  • It is already installed in a lot of windows computers.

If project's programming language was java, I would have chosen groovy.

|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.