tag:blogger.com,1999:blog-6666038.post-35303537843884146402008-02-27T17:58:00.001-05:002008-05-05T14:34:34.962-04:00Agile Curam Development Requirements Gathering: Temporal Evidence<p>Since Curam 4.5, it comes with a replacement to the Case Evidence Tree API called the Temporal Evidence Framework. This framework is a significant improvement in terms of development and ease of use over the previous framework. Kudos to Curam for providing us a way out of that previous API.</p> <p>I won't be talking about the UI of the evidence framework, that is fully documented in the Documentation Center. I would be focusing more on how to do analysis of requirements and converting them to evidence forms and structures.</p> <p>There are some properties of evidence that a BA should be aware of <strong>and </strong>take advantage of.</p> <ul> <li>Evidences can have parent-child relationships <li>Evidences can have attribution dates. <li>Evidences can be validated. <li>Attribution dates vs. Effective Dates. <li>Evidences can be associated with integrated case <strong>and optionally </strong>a participant <li>Evidences have approval cycles</li></ul> <h2>Requirements needed</h2> <p>There are two inputs that would help you get the analysis done on this task.</p> <ul> <li><a href="http://www.trajano.net/2008/02/agile-curam-development-requirements.html">Rules analysis</a> which would give you a list of evidence that the rules actually require. <li>Actual forms used by the client right now, this would give you a template to understand how to layout the evidence forms.</li></ul> <p>By combining the two you can determine which of the actual forms to convert into evidence forms.</p> <h2>Naive requirements analysis</h2> <p>The typical approach when creating evidence is to start with an actual form and just build the evidence form from it. This should only be considered as a <strong>starting point</strong>.</p> <p>Some things with actual evidence forms:</p> <ul> <li>One-to-many data. Since an actual form does not have the concept of parent-child relationships, you'd get some blocks which capture information that should be moved into a child evidence record. <li>Header data. These should be identified and removed from the actual evidence form. An evidence is already associated with either a case or a participant. There is no need to capture the information again. <li>Approval signature blocks. These should be done through the evidence approval cycle.</li></ul> <p>Following that you may end up with evidence that is not captured on any actual evidence forms. From this avoid the following traps:</p> <ul> <li>One benefit/product/etc. associated with an evidence. By doing that you're creating additional evidence workspaces making it harder for the user to manage their data. <li>Creating a new evidence for the missing information. You should leverage the existing forms that you already have and just augment it with new fields.</li></ul> <h2>Attribution Dates vs. Effective Dates</h2> <p>The framework has the concept of both effective date and attribution dates. Attribution dates are basically start and end dates for an evidence. Effective dates show when an evidence has actually changed.</p> <p>Effective dates are used if you want to see how an evidence changes over time. It is a bit more tedious on the end user because he has to enter two evidence records one when the person is eligible and another when he is not. Effective dates are always present, they can be empty, but the field must not be removed.</p> <p>Attribution dates should be used if you are defining something that can actually begin or end.</p> <p>The use of effective dates should be used when you are only trying to capture a change in circumstance. Effective dates are used when you need to visually see the history of changes over time.</p> <p>Effective dates cannot be set unless the evidence has become active.</p> <p>There is no reason why you couldn't do both. The Sample Sporting Grant does both.</p> <h2>Validations</h2> <p>Put validations only for sanity checks on mandatory fields and structural checks. Let the business rules handle business level validations. This keeps the validation logic simple.</p> <p>Evidence forms ideally should not have any mandatory fields. This gives a user the flexibility to enter in whatever data he has now and fill in the rest later.</p> <p>Rather than enforcing mandatory fields on save, have an on-save validation which checks if something needs to be mandatory on final it will show warnings to indicate to the user that the evidence form that they have filled in is not complete. Another validation on-activate will ensure that everything must be correct. The developers need only to change one from just a warning to a full error on the two events.</p> <p>Although format checks should be done on save. If the user enters data, it should be in the correct form.</p> <p>The following would be an example of validation analysis for an evidence form.</p> <table cellspacing="0" cellpadding="2" width="400" border="1"> <tbody> <tr> <td valign="top" width="133"><strong>Field</strong></td> <td valign="top" width="133"><strong>Format Requirements</strong></td> <td valign="top" width="133"><strong>Mandatory</strong></td></tr> <tr> <td valign="top" width="133">Actual Cost</td> <td valign="top" width="133">x >= 0</td> <td valign="top" width="133">yes</td></tr> <tr> <td valign="top" width="133">Estimated Cost</td> <td valign="top" width="133">x >= 0</td> <td valign="top" width="133">no</td></tr> <tr> <td valign="top" width="133">Director</td> <td valign="top" width="133"> </td> <td valign="top" width="133">yes</td></tr></tbody></table> <h2>Refactoring Evidence Forms</h2> <p>Once you have finished capturing what you require in evidence. An analyst needs to refactor the evidence screens so it is more beneficial to the user. They can work with a user interface specialist to do this.</p> <p>There would be times when evidence forms have a common block. Take the following example:</p> <ul> <li>Evidence Type A has the following fields: <ul> <li>medical expense item code <li>medical expense cost <li>doctor's note provided</li></ul> <li>Evidence Type B has the following fields: <ul> <li>travel expense item code <li>travel expense cost <li>insurance report provided</li></ul> <li>Evidence Type C has the following fields: <ul> <li>dental expense item code <li>dental expense cost <li>insurance report provided</li></ul></li></ul> <p>I could refactor it as </p> <ul> <li>Living Expenses evidence has the following fields: <ul> <li>expense type code <li>expense item code <li>expense cost</li></ul> <li>Associated documentation evidence which is a child evidence of living expenses. It has the following fields: <ul> <li>Associated documentation type <li>Provided indicator</li></ul></li></ul> <p>Doing that I only have one evidence workspace to deal with which lists all my living expenses. This works well if the screens are very similar in nature except for a type discriminator which can be passed when creating a new evidence. You can do that by having "New Medical Expense" rather than "New" in the evidence workspace screen.</p> <h2>Participant Level or Integrated Case Level</h2> <p>To determine whether an evidence should be in the participant or case level ask the following questions:</p> <ul> <li>Does the evidence have a notion of a participant? <li>Is it associated with more than one case member? If so, chances are it is a case level evidence. <li>Can the evidence be used in other cases?</li></ul> <p>What you may notice is most evidence would be associated with the participant. So let's talk about when would it be in the case?</p> <ul> <li>The evidence needs to has to apply to the primary client and only the primary client of an integrated case. Then maybe it should be associated with the case. <li>The evidence does not apply to any client at all. Then it has to be associated with the case. <li>Something that would deal with more than one case member. Then it has to be associated with a case.</li></ul> <h2>Examples of case level</h2> <ul> <li><em>Benefits Veto evidence</em>. This evidence specifies the benefits the primary client will receive regardless of what the other rules engine say. This one can be approved only by the Prime Minister. <li><em>Prenuptial Agreement evidence. </em>This evidence specifies the arrangements between two case members before they get married. Although they can be two different evidence instances.</li></ul> <h2>Big Caveat</h2> <p>Unfortunately, Curam does not provide us with a facility of associating only with a participant. Everything is still captured within the context of a case.</p> <h2>Sample Evidence information capture forms</h2> <p>The following shows some of the analysis work products that would come out.</p> <p>The following is the <em>top level view</em> of all the evidence types.</p> <table cellspacing="0" cellpadding="2" width="500" border="1"> <tbody> <tr> <td valign="top" width="117"><strong>Evidence Form</strong></td> <td valign="top" width="124"><strong>Approval Requirements</strong></td> <td valign="top" width="100"><strong>Attribution<br>Dates</strong></td> <td valign="top" width="108"><strong>IC Types Associated</strong></td> <td valign="top" width="49"><strong>Person Assoc</strong></td></tr> <tr> <td valign="top" width="117">Income Report</td> <td valign="top" width="124"> </td> <td valign="top" width="100">yes</td> <td valign="top" width="108">Income Support<br><br>Rehabilitation</td> <td valign="top" width="49">yes</td></tr> <tr> <td valign="top" width="117">Special Circumstance Benefit</td> <td valign="top" width="124">Director or<br>2 supervisors</td> <td valign="top" width="100">no</td> <td valign="top" width="108">Rehabilitation</td> <td valign="top" width="49">no</td></tr> <tr> <td valign="top" width="117">Medical Incident Report</td> <td valign="top" width="125">Medical supervisor</td> <td valign="top" width="103">start date only</td> <td valign="top" width="109">Income Support<br><br>Rehabilitation</td> <td valign="top" width="59">yes</td></tr></tbody></table> <p>You also need to tabulate all the products that would actually need the evidence so have a <em>product evidence link</em> list.</p> <p>Product Name</p> <ul> <li>Evidence Type 1 <li>Evidence Type 2 <li>Evidence Type 3</li></ul> <p>Finally you need to specify what fields an evidence form has and what validations if any there are. Just remember validations on save come first before activate. Keep the required fields on save to a minimum as well. So something like this would help out:</p> <p><em>Evidence Form</em></p> <table cellspacing="0" cellpadding="2" width="500" border="1"> <tbody> <tr> <td valign="top" width="124"><strong>Field</strong></td> <td valign="top" width="124"><strong>Type</strong></td> <td valign="top" width="138"><strong>Validation<br>On Save</strong></td> <td valign="top" width="112"><strong>Validation On Activate</strong></td></tr> <tr> <td valign="top" width="124">Participant</td> <td valign="top" width="124">Case Participant</td> <td valign="top" width="138">required</td> <td valign="top" width="112"> </td></tr> <tr> <td valign="top" width="124">Expense Amount</td> <td valign="top" width="131">Money</td> <td valign="top" width="148"> </td> <td valign="top" width="136">> 0</td></tr> <tr> <td valign="top" width="124">Expense Type</td> <td valign="top" width="131">Expense Type</td> <td valign="top" width="148"> </td> <td valign="top" width="136">not blank</td></tr></tbody></table> <h2>The data source</h2> <p>Determining where to get the data is pretty simple.</p> <ul> <li>If data exists already in the core tables. Use it. If you want it to reassess automatically just extend the existing code to perform the reassessment if needed.</li> <li>If you need to track things that change over time, use evidence. A majority of non-core data is going to be here.</li> <li>Use new entities if it needs its own lifecycle (DO NOT try to push it in as evidence)</li></ul> <h2>Approvals</h2> <p>Evidences has approval support built in, you can use it in lieu of putting in a "approved by" field in your evidence.</p> Archimedes Trajanohttp://www.blogger.com/profile/15993184075121538415noreply@blogger.com