From today's phone conversation, it is clear that at least one piece of functionality that is missing/needs significant improvement is tracking of co-pays.
Sam explained it, but I am going to try to describe it to make sure we are all on a similar page.
Typical office work flow.
Patient arrives presents their insurance information to the front desk.
At that time, the front desk staff reviews insurance card and notes a co-pay amount that would apply to an Eval/Management CPT code and collects cash, check or charge at that time.
Patient then sees provider, then goes back to the front desk to check out. If there are no other charges besides the E/M for that visit, no additional monies need to be collected. However, if there were additional procedures the patient may be responsible for additional co-pays which correspond to those "line items". Depending on procedure and insurance company, the amount collected might be a flat amount or a percentage of the fee.
A couple of high level questions. Sam, presumably in your current workflow your patient returns to the front desk with a completed superbill which denotes ICD-9 codes an E/M code, and potentially additional CPT/HCPCS codes. When your front office person sees those additional codes, how do they figure out if there needs to be an additional co-pay involved and for how much? Also, if you are using OpenEMR for this, are you still going to have a superbill, or is the provider going to be responsible for entering the charges after he's done with the patient?
The current implementation is that copays are tracked as entries with negative fee amounts in the billing table, which is bad on multiple levels (no need to go in to all the details, we all agree that it's bad). However the primary deficiency is that there is no way to map that co-pay in the billing table to a specific procedure (also in the billing table).
A proposed implementation is to use a seperate table (either the hypothetical table I mentioned earlier or the existing ar_activity table (with possible modifications for InnoDB support)). Then at each step when co-pays are collected during the visit, an entry in this table would be created with reference to the procedure line item in the billing table, amount, type of payment and possibly other stuff. The entry could also indicated the patient owes a co-pay but wasn't collected at that time. "I forgot my checkbook. I'll gladly pay you Tuesday for a hamburger today... etc...

"
Am I missing anything?