Bhima is a free, open source accounting and hospital information management system (HIMS) tailored for rural hospitals in Africa. We are an international team based in the Democratic Republic of the Congo.
The Journal is the central module of the BHIMA software - all transactions must flow through the Journal to enter the General Ledger and appear in subsequent reports. It is a gatekeeper for all proposed transactions, a ledger where the accountant can validate, correct, and approve transactions that enter the system. No financial transaction is considered finalized until it is posted from the Journal into the General Ledger.
In the introduction, we noted that all financial operations are represented as both a record and a transaction. In this section, we will discuss the properties of transactions in BHIMA.
As described in Double Entry Bookkeeping, transactions are composed of two or more lines. Some information, such as the transaction date is shared across all lines; others, like the accounts, are specific to a line. The list below contains all properties of a transaction. Shared properties are denoted by the tag [shared].
${project abbreviation}${increment}
. For example, the first transaction of a project abbreviated by “TST” will be TST1
. This allows transactions between projects to be differentiated.${record type}.${project abbreviation}.${increment}
. The “record type” is VO
for Vouchers, CP
for Cash Payments, and IV
for invoices. An example record is CP.TST.1
, which reads “the first Cash Payment of project TST”.Financial operations do not often occur in isolation, but are motivated by previous engagements or anticipate future operations. For example, the expectation when a client incurs debt is that they will eventually pay off their debt, or when stock is purchased that a subsequent delivery will increase the value and quantity of the stock in a warehouse.
To reflect this real-world property, transactions in BHIMA are linked by their record and reference columns. As discussed above, the record column is the identifier for the underlying cash payment, invoice or voucher. The reference column, however, points to the record column of another transaction somewhere in the Journal or General Ledger. This links the two transactions, with the interpretation of that particular line in the second transaction having been motivated by the referenced first transaction.
The concept of linked transactions is best demonstrated by an example. Below are two simplified transactions, the latter linking the former.
Transaction | Record | Account | Debit | Credit | Entity | Reference |
---|---|---|---|---|---|---|
TRANS1 | IV.TPA.1 | 410001 | $10.00 | PA.HEV.1 | ||
TRANS1 | IV.TPA.1 | 760001 | $2.50 | |||
TRANS1 | IV.TPA1 | 760002 | $7.50 |
Transaction | Record | Account | Debit | Credit | Entity | Reference |
---|---|---|---|---|---|---|
TRANS2 | CP.TPA.1 | 560001 | $4.50 | |||
TRANS2 | CP.TPA.1 | 410001 | $4.50 | PA.HEV.1 | IV.TPA.1 |
The first transaction is an invoice (denoted by IV.TPA.1
) for a patient (denoted by PA.HEV.1
) with a total value of $10.00. The second transaction is a cash payment (denoted by CP.TPA.1
) by the same patient (PA.HEV.1
) towards the previous invoice transaction (IV.TPA.1
) of $4.50.
Since BHIMA links transactions in this way, we can perform the following analyses:
PA.HEV.1
’s account after these operations?We can take the lines that have PA.HEV.1
as the Entity and sum their values together as follows:
Transaction | Record | Account | Debit | Credit | Entity | Reference |
---|---|---|---|---|---|---|
TRANS1 | IV.TPA.1 | 410001 | $10.00 | PA.HEV.1 | ||
TRANS2 | CP.TPA.1 | 410001 | $4.50 | PA.HEV.1 | IV.TPA.1 | |
$10.00 | $4.50 | - |
The balance of PA.HEV.1
’s account is $10.00 - $4.50 = $5.50. Since the sign is positive, we say that PA.HEV.1
has a debtor balance.
IV.TPA.1
?This time, we gather the invoice via its record _IV.TPA.1
, and all associated transactions via their _reference IV.TPA.1
as shown below:
Transaction | Record | Account | Debit | Credit | Entity | Reference |
---|---|---|---|---|---|---|
TRANS1 | IV.TPA.1 | 410001 | $10.00 | PA.HEV.1 | ||
TRANS2 | CP.TPA.1 | 410001 | $4.50 | PA.HEV.1 | IV.TPA.1 | |
$10.00 | $4.50 | - |
No surprise, the balance of the invoice IV.TPA.1
is $10.00 - $4.50 = $5.50.
A transaction is in one of two states: unposted and posted. Unposted transactions can be edited and deleted while posted transactions are unalterable. All transactions begin in the unposted state, no matter their origin. This indicates that they have not been validated by an accountant, and will remain in this state until an accountant posts them to the General Ledger.
Unposted and posted transactions are indicated with a light blue and a light orange dot, respectively.
Transactions are posted to the General Ledger by following these steps:
In both states, transactions can modified by editing a transaction.
Every transaction in the system has a transaction type. Transaction types facilitate later analysis by labeling each transaction with a descriptive tag. These are broadly grouped into the following types:
A transaction can only have a single transaction type. You can add your own transaction types through the Transaction Type module.
Because BHIMA is a double-entry accounting system, sometimes you need to find the opposite side of a transaction whilst only knowing one side. For example, you may want to know accounts have interacted with the cash account, or find the other side of a transaction by the debit or credit value. BHIMA facilitates these lookups in the usual way via the search modal.
In the search modal, put any identifying information of the transaction (or group of transactions) sought, then enable the “show full transactions” option in the default filters. This will ensure the entire transaction is returned, no matter which rows are matched by the search criteria. This may result in the limit
property not applying, since it is being explicitly overridden to show the entirety of the transaction.