If you have ever had multiple driver based accounts that are based off other driver based accounts, you may have noticed that when hitting save on a form they do not all fully calculate. In the example below, every account without a trend selected has as its member formula the product of the previous two accounts. For example, Medicare Gross Revenue is the product of Medical Nominal Revenue and the Nominal to Gross Adjustment – Medicare, then the Medicare Reimbursement is the product of the Medicare Gross Revenue and the Medicare Reimbursement Rate.
The member formulas for all these accounts also include “OFS_Total Plan” plan element when doing the calculation in order to capture the the true final value of each driver that includes any calculations and adjustments made. For Medicare Gross Revenue, the formula is:
“Medicare Nominal Revenue”->”OFS_Total Plan”* “Nominal to Gross Adjustment – Medicare”->”OFS_Total Plan”;
Explore key considerations, integrating the cloud with legacy applications and challenges of current cloud implementations.
When we hit save on the example above, Calculate Form is ran and the following is produced:
Notice that only the first driver based account highlighted in yellow is calculated, even though in the account dimension we have all these accounts in the correct sequential order. For the rest to be calculated, we would need to have Calculate Form run three more times by hitting save three times. We won’t get into the details of why this occurs, but the issue lies in the fact that OFS_Total Plan is a dynamically calculated member. In order to get around this and have all accounts fully calculate on hitting save once, we need to include only stored members in our member formula. One method would be to individually sum all parts of OFS_Total Plan (which would make for an unnecessarily long member formula), another would be to use the @sumrange and @relative functions to pull the individual level 0 members of OFS_Total Plan:
@sumrange(“Medicare Nominal Revenue”,@relative(“OFS_Total Plan”,0)) * @sumrange(“Nominal to Gross Adjustment – Medicare”,@relative(“OFS_Total Plan”,0));
Once we change the four driver based accounts to be written in a similar fashion to the example above with their respective driver accounts, on save all accounts calculate at once.