Wow, between the article and the case study there is quite a bit of information on the project – no screenshots? 🙁 . The team actually coded a Bayesian decision system? I’d like to see that code – any public examples you know of?

Congrats to Dr. Robertson, Sagestone/Microsoft and You – nominated by Steve Ballmer himself, kinda nice for the ego and resume 🙂

I was wondering how you did the language translations (on the fly or manually translated) – the Content Creator answered that. That could be a lot of content to install locally (using MSDE?). Also, why use Remoting vs. Web Services for the Content Creator. (more rhetorical questions than anything).

I’d still like to learn how that filter/decision matrix works. Maybe RRI could license the engine to make some money to cover the costs of development?

Anyway, it is all very impressive and sounds like a great job and group of people to be involved with. Good Luck.

Yes, we created our own Bayesian inference engine that is specifically geared to perform in real-time against approximately 20,000 clinical findings and 8,000 diseases (much bigger than an actual knowledge base would be). The runtime memory for a matrix like this ends up being around 5MB, which is very efficient. On current hardware, we can run inference in under 1/1000th of a second.

Additionally, we compute suggestions for the user (things that will help differentiate between the possible diagnoses). This is more computationally intensive, but we still manage to do it in under 1/2 second on current hardware.

The end result is a system that provides immediate feedback and interaction as more and more evidence is added to a patient case.

The on-the-fly translations work a lot like the Resource files in .NET. The system prefers to use a more specific translation, but if one is not available it "falls back" to the next-best translation. Eventually, if no translations are provided, the final culture is English neutral.

As far as the Remoting versus Web Services question, we opted to use Remoting, because we have no need for interoperability with other systems, and it works very well for our problem space. The architecture would support replacing our communications layer with Web Services if we ever decide to move that direction. That said, there may be many good reasons to expose some of our functionality via Web Services for other clients in the future. We don’t see the two as mutually exclusive but rather as complementary technologies.