And this also argues in favor of database software (like VFP) that has unique date data types that can't be confused with anything else.

I have news for you. VFP date types can be entered without having to enter the punctuation. For example, today can be entered as
          20130215

Huh? Try this:

CREATE TABLE foobar FREE (somedate D)

INSERT INTO foobar (somedate) VALUES (20130215)

You'll get a data type mismatch error.

I said "enter". We were discussing data entry. You are moving the goalposts.

One possibility would be to use a date picker.

But if I use a textbox in VFP whose initial value is {} then the automatic VFP "bad date" validation goes into effect. That excludes some errors.

There is also business-object-level validation. Mine for dates does various things in various situations, such as not allowing future dates, not allowing dates too far in the past, not allowing end dates that are earlier than corresponding start dates, etc.

In any case, having a unique data type for dates precludes the value from being treated as anything other than a date. One can't do math on a VFP date value and get a result that can be interpreted as currency, unless one is completely clueless as a programmer. And as I understand it, some of the big-iron database systems are beginning to offer unique date data types now.

Meanwhile, in the situation described, a user entered a date value into a control that was intended to accept medical service co-payment dollar values. Based on how much this ended up costing, I would guess the user did it over and over and over, and the values were added up over time. If so, it strongly implies that the user interface was poorly designed, since users typically don't make the same mistake hundreds of times in a row.

I think some obvious points to make would be these:

1. A strict date value requires 10 digits. Even a loose date value with a two-digit year requires 6 digits. Typical medical service co-payment values in the United States are less than $100.00. Let's be generous and assume that a single co-pay could be as much as $999. Let's also assume you need the decimal places (although most co-pays are rounded to dollars, I've seen some weird co-pay quotes from Medicare), So at the very most you need 5 digits to enter a single co-pay amount. So mask the control to 5 digits including two decimal places. It would then be impossible to enter a complete date value into the control. In the USA, we do dates MM/DD/YYYY. If an oblivious user starts to type a date value into the control the worst that could happen would be to record a value of $123.12.

2. Co-payments are not typically randomly variable; there are various set amounts, and these are tied into the particular medical insurance coverage plan the patient has. Medicaid being fairly uniform within a single state, it would not be too difficult to establish a lookup table of acceptable values and require users to choose one from a list instead of free-hand typing digits. The available choices could be limited by the service being billed for, providing even more security. But even without a picklist you could still use business object code to test the value entered against allowable co-pay values so that if $123.12 wasn't a valid amount it wouldn't get entered into the database.

>Some bug reports turn out to be the end user doing something wrong.

Yes, that is always the case. When I trace a report to this cause, the first thing I ask myself is, "Is there some other way to do this that will be less confusing for the user?" Often there is. Sometimes there isn't.

It's a maxim among writers that if the intended audience didn't understand what was written, it's the writer's fault, not the readers'. The whole point of writing is to communicate effectively. If one's writing is not understood, one has failed to communicate.

The whole point of computerizing the collection of data is to save time and improve accuracy. If a computerized system for collecting data permits simple-to-prevent data entry errors, regardless of whether better users could also prevent them, it has failed in its mission.

Ken Dibble
www.stic-cil.org


_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/[email protected]
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.

Reply via email to