Every cell in the body produces cholesterol. Additional cholesterol, received through the diet, is absorbed by the small intestine. Both synthesized and absorbed cholesterol play a role in atherosclerosis development as it all, sooner or later, ends up in LDL. Blocking cholesterol synthesis with a statin lowers LDL cholesterol as does blocking cholesterol absorption with an inhibitor like Ezetimibe (otherwise it’s repetitive). Every person is different when it comes to cholesterol balance. Some people synthesize cholesterol more than they absorb, while others absorb more than they synthesize. Knowing whether a patient is a hyper synthesizer or a hyper absorber allows for better treatment as response to drug therapy varies accordingly. A synthesizer responds well to a statin while a hyper absorber may benefit more from combination therapy with Ezetimibe. Knowing what therapy works best in advance will allow for a more successful and cost effective treatment strategy.
Lathosterol, the direct precursor of cholesterol, can be measured in plasma or serum. Eighty percent of synthesized cholesterol goes through lathosterol, while only 20% goes through desmosterol. Therefore lathosterol is the only valid marker of cholesterol production. People who overproduce cholesterol have elevated levels of lathosterol normalized to total blood cholesterol levels. Markedly elevated levels of lathosterol identify patients with increased risk of premature coronary heart disease.
This decision service analyzes lab results to determine risk and lifestyle and therapy options
We first identify the business objects required for this model:
And the relationship between them:
Patients will have zero or more lab results and after the rules have executed there will be zero or more plugins (objects that contain the conclusions and recommendations made by the rules)
Figure 1 Vocabulary
Let’s take a look at the main rules that look at cholesterol production and absorption classifications.
Each of these can be classified as Optimal, Borderline or High.
This means there are 3x3=9 possible combinations to deal with.
The Appendix lists each of the nine rules.
Here are two of them:
The first step in modeling these rules is to copy/paste the rules into the rule statement section of the rule sheet:
Then each combination of value can be mapped out in the rule columns
Then we add the appropriate action for each of the nine cases.
Here are the first few rules
Figure 2 The Core Rule Sheet
The actions of the rules are to create the text values that will be in the plugin objects that eventually appear on the report.
The syntax is basically plugin += Plugin.new[text=’xxxxx’]
Which means create a new plugin object with a text value of ‘xxxxx’ and add it to the list of plugins for this patient.
In the case of rules 1 and 2 the text is fixed. But in rule 3 you can see how a variable text value (Ezetimibe) can be embedded in the text by using the keyword cellValue.
Because the data model contains relationships between the Patient object and the LabResults and Plugins we need to tell the rule sheet what part(s) of the hierarchy we will be using. This is important because it enables Corticon to make sure that when it analyzes lab results it’s using the ones that belong to the correct patient.
Here’s the scope section:
Notice the names in square brackets [ ]. These are aliases to the objects that we use in the rules.
So the reference to production.classification means the classification of the lab result passed in.
But how do we know which of the many lab results this actually refers to?
That’s where the filter section comes into play:
The filters tell us that the production classification that’s being tested is called Lathosterol and the absorption classification is called “Cholesterol Absorption”
But that’s not one of the lab results that is passed in to the rules.
What does get passed in are the classifications for Beta-Sitosterol and Campesterol and the documented rules tell us that we need to take the higher of these two classifications.
That leads us to a subordinate rule sheet whose purpose is to compare Beta-Sitosterol and Campesterol and determine the higher classification.
Here’s the first few rules of that sheet:
Figure 3 Rules for Absorption Classification
Notice that the action of these rules is to create that missing “Cholesterol Absorption” lab result as an instance of a new business object called ComputedLab. That’s what gets referred to in the previous rule sheet for absorption classification.
These two sheets will then work in conjunction. To show this we put them in the rule flow diagram:
At this point we have the main rules for this decision.
But there are a lot of special cases and exceptions described in the documentation.
From a business rules perspective these are not special cases or exceptions – they are simply more business rules that are required for a complete solution.
Let’s work through some of these.
Rules 10-15 deal with Very High levels of lipids. E.g.
One way to model this (there are always alternatives) is:
Figure 4 Very High Value Rules
However it’s possible that the calling application may already provide the AVH classification in the input data
Rules 16-19 deal with values below the detection limit
This can be modeled like this
Figure 5 BDL Rules
This can be modeled as
Figure 6 Missing Values Rules
Figure 7 Lathosterol/Campesterol Differences
Question: Does this only apply to optimal, borderline and high or to all classifications?
Assembling the Decision service
The rule flow is the mechanism for assembling a decision service from the various rule sheets:
Figure 8 The Rule Flow
We can specify the properties of this rule flow as follows:
Figure 9 Rule Flow Properties
If we later decide to do the classification inside Corticon we would simply add rule sheets for each of the lipids:
Lathosterol could look like this:
Figure 10 Classification Rules for Lathosterol
Based on these definitions
We can store the classification ranges in a database lookup table like this
Figure 11 Classification Ranges in a Database
But are we sure there are no ambiguities or missing ranges?
Can you see the problem with this table?
Figure 12 Detecting Ambiguous Tanges
This rule sheet will add missing ranges with a classification of ‘UNDEFINED’
Figure 13 Detecting Missing Ranges
Reporting missing ranges
Publishing decision services.
Note: Two (slightly) different rule flows (with differing versions and effective dates) but both have the SAME decision service name.
Calling applications only need to supply the name – Corticon will execute the appropriate version automatically.
1. Lathosterol (Cholesterol Production Marker)
Data Values ExampleSystem provide the data as follow:
Test Not Perform
Absolute Value== Number
AVH== Action Value High
2. Desmosterol (Cholesterol Production Marker)
3. Beta-sitosterol (Cholesterol Absorption Marker)
4. Campesterol (Cholesterol Absorption Marker)
5. Cholestanol (Cholesterol Absorption Marker)
6. Cholesterol Production/Absorption Balance
Plug Ins and Interpretations
1. Borderline Production, Borderline Absorption
2. High Production, Borderline Absorption
3. High Production, High Absorption
4. High Production, Optimal Absorption
5. Borderline Production, High Absorption
6. Optimal Production, Borderline Absorption
7. Optimal Production, High Absorption
8. Optimal Production, Optimal Absorption
9. Borderline Production, Optimal Absorption
10. Very High Lathosterol (Action Value)
11. Very High Desmosterol (Action Value)
12. Very High Beta-Sitosterol and Campesterol (Action Value)
13. Very High Beta-sitosterol (Action Value)*
14. Very High Campesterol (Action Value)*
15. Very High Cholestanol (Action Value)
16. Lathosterol below detection limit*
17. Desmosterol below detection limit*
18. Beta-sitosterol below detection limit*
19. Campesterol below detection limit*
20. Very High Cholesterol Production/Absorption Balance (Action Value)
21. Very Low Cholesterol Production Absorption Balance (Action Value)
22. Current: If any results are null* (requires revision – see Exception Handling #2 below)
A. Note for programming with regard to production: always use the normalized lathosterol to categorize people as optimal, borderline, or high, even if there is an alert value on desmosterol (reason: 80% of the production goes through lathosterol).
B. With regard to absorption use only normalized beta-sitosterol and normalized campesterol, even if there an alert value very high cholestanol, for normalized beta-sitosterol and campesterol, the higher value supercedes the lower value:
C. For Action Values please put the actual value in absolute terms as mg/L in the plug ins (applies for plug ins 10 – 15 above).