KISS with HP Exstream

A basic principle I always try to stick to with Dialogue is to keep things as simple as possible (Keep It Simple Stupid).  If something looks too complicated to easily explain then it probably is.  Take the following example (using word Mergefields to define the content) from an insurance document I have worked on recently:-

The spec says:-


{ IF { MERGEFIELD Policyholder_Type } = "SINGLE" "I" ""}{ IF { MERGEFIELD Policyholder_Type } = "JOINT" "We
" ""}{ IF { MERGEFIELD Policyholder_Type } = "OTHER" "I/We" ""} agree to you asking any doctor { IF { MERGEFIELD Policyholder_Type } = "SINGLE" "I" ""}{ IF { MERGEFIELD Policyholder_Type } = "JOINT" "we" ""}{ IF { MERGEFIELD Policyholder_Type } = "OTHER" "I/we" ""} have consulted about { IF { MERGEFIELD Policyholder_Type } = "SINGLE" "my" ""}{ IF { MERGEFIELD Policyholder_Type } = "JOINT" "our" ""}{ IF { MERGEFIELD Policyholder_Type } = "OTHER" "my/our" ""} physical or mental health to provide information so you may assess { IF { MERGEFIELD Policyholder_Type } = "SINGLE" "my" ""}{ IF { MERGEFIELD Policyholder_Type } = "JOINT" "our" ""}{ IF { MERGEFIELD Policyholder_Type } = "OTHER" "my/our" ""} proposal. You may gather relevant information from other insurers about any other applications for life, critical illness, sickness, disability, accident or private medical insurance that { IF { MERGEFIELD Policyholder_Type } = "SINGLE" "I" ""}{ IF { MERGEFIELD Policyholder_Type } = "JOINT" "we" ""}{ IF { MERGEFIELD Policyholder_Type } = "OTHER" "I/we """} have applied for. { IF { MERGEFIELD Policyholder_Type } = "SINGLE" "I" ""}{ IF { MERGEFIELD Policyholder_Type } = "JOINT" "We" ""}{ IF { MERGEFIELD Policyholder_Type } = "OTHER" "I/We" ""} authorise those asked to provide medical information when they see a copy of this consent form. This allows you to gather medical reports within six months of the start of the plan, or after { IF { MERGEFIELD Policyholder_Type } = "SINGLE" "my" ""}{ IF { MERGEFIELD Policyholder_Type } = "JOINT" "our" ""}{ IF { MERGEFIELD Policyholder_Type } = "OTHER" "my/our" ""} death, to support any claim made on the policy proceeds.
This information can also be used to maintain management information for business analysis.
By signing this declaration { IF { MERGEFIELD Policyholder_Type } = "SINGLE" "I am" ""}{ IF {MERGEFIELD Policyholder_Type } = "JOINT" "we are" ""}{ IF { MERGEFIELD Policyholder_Type } = "OTHER" "I am/We are" ""} allowing you to process { IF { MERGEFIELD Policyholder_Type } = "SINGLE" "my" ""}{ IF { MERGEFIELD Policyholder_Type } = "JOINT" "our" ""}{ IF { MERGEFIELD Policyholder_Type } = "OTHER" "my/our" ""} application using the information that { IF { MERGEFIELD Policyholder_Type } = "SINGLE" "I" ""}{ IF { MERGEFIELD Policyholder_Type } = "JOINT" "we" ""}{ IF { MERGEFIELD Policyholder_Type } = "OTHER" "I/we" ""} have given. You may also use this information to process any claim made on this policy.

There are about 30 conditions in that block, each of which needs to be coded and maintained, however if you look closely you’ll see they are all one of the following:-

  • IF { MERGEFIELD Policyholder_Type } = “SINGLE”
  • IF { MERGEFIELD Policyholder_Type } = “JOINT”
  • IF { MERGEFIELD Policyholder_Type } = “OTHER”

Rather than coding all of the variations separately, it is much simpler to separate the three different versions of the paragraphs as shown:-


{ IF { MERGEFIELD Policyholder_Type } = "SINGLE" "I agree to you asking any doctor I have consulted about my physical or mental health to provide information so you may assess my proposal. You may gather relevant information from other insurers about any other applications for life, critical illness, sickness, disability, accident or private medical insurance that I have applied for.  I authorise those asked to provide medical information when they see a copy of this consent form. This allows you to gather medical reports within six months of the start of the plan, or after my death, to support any claim made on the policy proceeds.
This information can also be used to maintain management information for business analysis.
By signing this declaration I am allowing you to process my application using the information that I have given. You may also use this information to process any claim made on this policy." ""}


{ IF { MERGEFIELD Policyholder_Type } = "JOINT" "We agree to you asking any doctor we have consulted about our physical or mental health to provide information so you may assess our proposal. You may gather relevant information from other insurers about any other applications for life, critical illness, sickness, disability, accident or private medical insurance that we have applied for. We authorise those asked to provide medical information when they see a copy of this consent form. This allows you to gather medical reports within six months of the start of the plan, or after our death, to support any claim made on the policy proceeds.
This information can also be used to maintain management information for business analysis.
By signing this declaration we are allowing you to process our application using the information that we have given. You may also use this information to process any claim made on this policy.
" ""}


{ IF { MERGEFIELD Policyholder_Type } = "OTHER" "I/We" ""} agree to you asking any doctor I/we have consulted about my/our physical or mental health to provide information so you may assess my/our proposal.  You may gather relevant information from other insurers about any other applications for life, critical illness, sickness, disability, accident or private medical insurance that I/we have applied for. I/We authorise those asked to provide medical information when they see a copy of this consent form. This allows you to gather medical reports within six months of the start of the plan, or after my/our death, to support any claim made on the policy proceeds.
This information can also be used to maintain management information for business analysis.
By signing this declaration I am/We are allowing you to process my/our application using the information that I/we have given. You may also use this information to process any claim made on this policy." ""}

In HP Exstream terms, these could then be coded as three individual table rows. text boxes or paragraphs with a single rule on each making it much easier to understand, maintain and test.  Admittedly there’s a slight maintenance overhead in that any change to the paragraph text would have to be made three times instead of once, but the benefits of simplifying the rules (from thirty down to three) far outweigh this.

Of course an even neater way to handle this is to replace the variable elements of the text with user variables which can be set at customer timing depending on the value of Policyholder_Type.  That way you eliminate the need to have multiple versions of the same paragraph but also reduce the complexity of the code.