Model 1a : Elaborating the Experimental Environment Overview Inactive Button

Model 2: A First-Order Model of Medical Diagnosis

The Subject

One of the problems with the propositional model described previously is that knowledge is stored in an essentially procedural form, with the consequence that general procedural aspects of the diagnosis process are not distinguished from the domain-specific knowledge. This section develops an alternative Subject model which makes this distinction explicit, paving the way for the learning models to be described later.

We can model the knowledge base as a long-term, read-only memory for present purposes, so the first modification to make is to add a new buffer to the Subject box/arrow diagram, and label it knowledge base. A read arrow should be added, permitting read access to the Decision Procedure, like so:

The contents of the knowledge base comprise the Subject's task knowledge, and are defined as the Initial Contents of the buffer:

Element: suggest from dysphagia
suggests(dysphagia, tonsillitis)

Element: suggest from dysphagia
suggests(dysphagia, laryngitis)

Element: suggest from vomiting
suggests(vomiting, meningitis)

Element: suggest from vomiting
suggests(vomiting, hepatitis)

Element: suggest from pyrexia
suggests(pyrexia, meningitis)

Element: suggest from pyrexia
suggests(pyrexia, hepatitis)

Element: suggest from pyrexia
suggests(pyrexia, tonsillitis)

Element: suggest from pyrexia
suggests(pyrexia, parotitis)

Element: suggest from headache
suggests(headache, meningitis)

Element: suggest from headache
suggests(headache, tonsillitis)

Element: suggest from headache
suggests(headache, laryngitis)

Element: suggest from earache
suggests(earache, meningitis)

Element: suggest from earache
suggests(earache, tonsillitis)

Element: suggest from earache
suggests(earache, parotitis)

Element: tonsillitis -> expect pyrexia present
assoc(tonsillitis, pyrexia, present)

Element: tonsillitis -> expect vomiting absent
assoc(tonsillitis, vomiting, absent)

Element: tonsillitis -> expect earache present
assoc(tonsillitis, earache, present)

Element: tonsillitis -> expect dysphagia present
assoc(tonsillitis, dysphagia, present)

Element: tonsillitis -> expect headache present
assoc(tonsillitis, headache, present)

Element: meningitis -> expect headache present
assoc(meningitis, headache, present)

Element: meningitis -> expect pyrexia present
assoc(meningitis, pyrexia, present)

Element: meningitis -> expect dysphagia absent
assoc(meningitis, dysphagia, absent)

Element: meningitis -> expect earache present
assoc(meningitis, earache, present)

Element: meningitis -> expect vomiting present
assoc(meningitis, vomiting, present)

Element: hepatitis -> expect earache absent
assoc(hepatitis, earache, absent)

Element: hepatitis -> expect vomiting present
assoc(hepatitis, vomiting, present)

Element: hepatitis -> expect dysphagia absent
assoc(hepatitis, dysphagia, absent)

Element: hepatitis -> expect pyrexia present
assoc(hepatitis, pyrexia, present)

Element: hepatitis -> expect  headache absent
assoc(hepatitis, headache, absent)

Element: parotitis -> expect  vomiting absent
assoc(parotitis, vomiting, absent)

Element: parotitis -> expect  earache present
assoc(parotitis, earache, present)

Element: parotitis -> expect dysphagia absent
assoc(parotitis, dysphagia, absent)

Element: parotitis -> expect pyrexia present
assoc(parotitis, pyrexia, present)

Element: parotitis -> expect headache present
assoc(parotitis, headache, present)

Element: laryngitis -> expect vomiting absent
assoc(laryngitis, vomiting, absent)

Element: laryngitis -> expect dysphagia present
assoc(laryngitis, dysphagia, present)

Element: laryngitis -> expect pyrexia present
assoc(laryngitis, pyrexia, present)

Element: laryngitis -> expect earache absent
assoc(laryngitis, earache, absent)

Element: laryngitis -> expect headache present
assoc(laryngitis, headache, present)

Element: diagnose tonsillitis
pattern(tonsillitis, [told(dysphagia, present), told(earache, present)])

Element: diagnose tonsillitis
pattern(tonsillitis, [told(dysphagia, present), told(pyrexia, present)])

Element: diagnose laryngitis
pattern(laryngitis, [told(dysphagia, present), told(earache, absent)])

Element: diagnose laryngitis
pattern(laryngitis, [told(dysphagia, present), told(pyrexia, absent)])

Element: diagnose meningitis
pattern(meningitis, [told(headache, present), told(pyrexia, present), told(dysphagia, absent)])

Element: diagnose meningitis
pattern(meningitis, [told(vomiting, present), told(headache, present)])

Element: diagnose meningitis
pattern(meningitis, [told(vomiting, present), told(earache, present)])

Element: diagnose parotitis
pattern(parotitis, [told(earache, present), told(dysphagia, absent), told(headache, absent)])

Element: diagnose parotitis
pattern(parotitis, [told(earache, present), told(dysphagia, absent), told(pyrexia, absent)])

Element: diagnose hepatitis
pattern(hepatitis, [told(vomiting, present), told(headache, absent)])

Element: diagnose hepatitis
pattern(hepatitis, [told(vomiting, present), told(pyrexia, absent)])

Now, in the Decision Procedure, you should delete everything except the symptom selection rules, which remain as before. You should have only one of the following rules active at any time.

Rule (refracted): The equivalent of the discrim rule in Fox 1980
IF:   once expected(Disease1, Symptom, Value1) is in Working Memory
           expected(Disease2, Symptom, Value2) is in Working Memory
           not Value1 == Value2
           not told(Symptom, Value) is in Working Memory
THEN: add query(Symptom, present) to Working Memory

Rule (refracted): The equivalent of the verify rule in Fox 1980
IF:   once expected(Disease, Symptom, present) is in Working Memory
           not told(Symptom, Value) is in Working Memory
THEN: add query(Symptom, present) to Working Memory

The rest of the Decision Procedure process should be replaced with the following three rules, which use the three types of elements in the knowledge base to replicate the function of the three types of rules in the propositional version of the model:

Rule (refracted): Expectations from any symptom
IF:   told(Symptom, present) is in Working Memory
      not diagnosis_is(AnyDisease) is in Working Memory
      suggests(Symptom, Disease) is in knowledge base
THEN: add diseases(Disease, suspected) to Working Memory

Rule (refracted): Anticipating symptoms from rules
IF:   diseases(Disease, suspected) is in Working Memory
      not diagnosis_is(Any_Disease) is in Working Memory
      assoc(Disease, Symptom, Value) is in knowledge base
THEN: add expected(Disease, Symptom, Value) to Working Memory

Rule (refracted): The diagnosis rule
IF:   diseases(Disease, suspected) is in Working Memory
      pattern(Disease, Pattern) is in knowledge base
      not Item is a member of Pattern
          not Item is in Working Memory
THEN: add diagnosis_is(Disease) to Working Memory

Now try running the model. It should work as before.


Model 1a : Elaborating the Experimental Environment Overview Inactive Button