In adult males, symptoms A, B, C and, rarely, D
Adult females, symptoms A, B, commonly D and F (only present after having given birth)
In children, A, B, F, occasionally G, B is sometimes masked by X in younger children.
Symptoms can switch depending on age, gender and other factors. There is probability as well. What structure is used?
We want to be able to see what is switching a young adult may show symptoms more typical of a child. If you dont know the gender or the age, do all possibilities come up? That is, the more you know, the more accurate.
We have to handle causation modelling several diseases may cause a symptom, with different degrees of probability we need to sort all this out at an operator removed from the symptom object.
A Causes B
No other cause of B
If there are multiple causes of B, then
The control on probability may be in the logical control of the ToCause via a logical operator, or at the object level (all objects carry a probability of existence in the quiescent state, it is not known that is, they neither exist nor is there any proof they do not exist. To simplify things, all of the bits of a generic patient are assumed to exist unless advised otherwise (no specific gender or age or weight except generic ranges). Once a particular patient materialises, then symptoms and diseases start coming into existence or being forced out of existence.
Probabilities can be overridden, so if A is known not to exist from some other source
It is a little more complicated than that existence ranges from 0 (definitely does not exist) through 0.5 (dont know either way) to 1.0 (definitely does exist). Values in the range 0.01 to 0.99 can be overridden, so 0 (probably 0.01 was propagated) overrides 0.84.
We have decided it is not A, so the cause of B must be X. We may discover it cant be X either, which means there is an even less likely cause, or our model is wrong, or the conclusion A did not exist was premature, or we need to re-examine whether B really exists, or we just thought it did. It should be clear that for large and complex networks, there is a place for a careful analyser here, moving its focus to wherever the evidence drives it.
It gets more complicated
To allow for variability, we will use the ObjectGroup structure as object existence logic, relying on the type of control to determine whether it operates as an OBJECT_AND or an OBJECT_OR, or some more fancy type, such as an AND in one direction and an OR in the other. So, A causes B, C and D becomes
If B exists, and there is no other cause for B other than A, then A exists, and C and D must also exist, and if they dont
Multiple causes required together
These simple diagrams give a hint of the complex networks required when a dozen different diseases can give rise to many of the same symptoms (and why the networks are going to need to be built from text).
A Presentation showing causation in bioinformatics
Medical Design Notes