This page documents the change that will be performed in the scope of the Tanzanian project to make openIMIS ready for interfacing with an accounting system. This work will be divided in several steps:
Create a database structure to save the account payable
Save the different account payable
Convert the different account payable following that structure
Create a FHIR interface for the accounting systems
Create a database structure to save the account payable
The concept is to use a widely use format as base. We chose SAGE API Invoices. openIMIS is not an accounting system therefore generating book and ledger is not in the project scope but invoice are a good representation for the payable mentioned above. To bring flexibility, a JSON fields was added to the invoice line in case a structured details is required.
The link with the Source and actor won’t be in a form a database foreign keys because those could be from different table.
accountPayable
field | type | comment |
source | json | referenceActor { "label":"", "code":"", "type": "batchRun/commissionOverview/capitationReport", "id":"UUID", "address":{"text":"",...} } |
third_party | json | referenceSource { "label":"", "code":"", "type": "HF/Insuree/PH/payer/user", "id":"UUID", "address":{"text":"",...} } |
id | UUID | |
code | str | or reference for the insurance |
code_rcp | str | or reference for the recipient |
code_ext | str | if required for external system integration |
date_due | date | date on which the payment is due |
date_invoice | date | Date of the “invoice“ |
date_from | date | invoice covering service/item from |
date_to | date | invoice covering service/item to |
date_payed | date | Date on which the payment was actually documented as Done |
amount_discount | float | total of the detail discount |
amount_net | float | Total without tax |
tax_analysis | json | tax details { "lines": [ {"label":"", "rate":"", "base":"", "amount":""}] … ], "total":"" } |
amount_total | float | total net + tax total |
status | int | ENUM: draft, validated, payed, cancelled, deleted |
currency_rcp_code | str | currency of the recipient (if different) |
currency_code | str | currency of insurance |
note | bigttext | |
terms | bigttext | conditions |
assets
field | type | comment |
code | str | reference |
accountPayableId | UUID | reference to accountPayable |
description | str | |
details | json | depend of the type, TBD |
ledger_account | int | from config |
quantity | float | |
unit_price | type | |
discount | float | to document difference between the std price and the price to be paid, usefull for relative pricing |
tax_rate | Calculation uuid | Calculation to calculate the tax |
tax_analysis | json | tax details { "lines": [ {"label":"", "rate":"", "base":"", "amount":""}] … ], "total":"" } |
amount_total | float | net +tax |
amount_net | qty * unitprice - discount |
Save the different account payable
Ideally the “batchrun“ would be rename “close accounts payable”, closing account will be on a defined scope:
area: if not national, will take only the product define on the level selected or below
type: the type below could be checked
supplier payment method (notion not yet existing)
Claim valuation (fee for service - batchRun): https://openimis.atlassian.net/browse/OTC-10
Capitation payment: https://openimis.atlassian.net/browse/OTC-10
operation fee payment method (notion not yet existing)
Commission payment:
Payment fees
insuree Cash payment (doesn’t exist yet)
an account payable param report will be generated for each of the bellow Item when required by the payment method
Product / payment period for “supplier payment method”
actor / payment period for “operation fee payment method”
insuree for the insuree payment period
Convert the different account payable following the new structure
Claim valuation (batchRun):
two way of creating the accountPayable are possible for the valuation, in both case there will be one “accountPayable” per HF
One asset (line) per claim, claim details as asset description: claimed amount as unit price, net amount as net price, discount calculated based on net and unit price
one asset (line) per item or service with claim detail as asset description: item/service claimed unit price as unit price, net as valuated price, quantity as quantity, discount calculated based on net and unit price
Capitation payment:
two way of creating the accountPayableare possible for the valuation, in both case there will be one “accountPayable” per HF
one asset (line) per weighted indicator I for product P : Allocated contribution/ Sum(indicator for P) as unit price , indicator I as quantity, (1-weight) as discount;
Population living in catchments area of the health facility
Number of families living in catchments area of the health facility
Insured population living in catchments area of the health facility
Insured number of families living in catchments area of the health facility
Number of claims (contacts) with the health facility by insured in the catchment area
Adjusted amount
asset (line) per product with the detail of the calculation as asset description
Commission payment:
one accountPayable per EO,
one asset (line) per product/commission, sum of policy value as quantity, commission as unit price, product account code as ledger account
one asset (line) per policy : policy value as quantity, commission as unit price, product account code as ledger account (dependent detail as asset description)
Payment fees
one accountPayable per type of payment (TBC)
one asset (line) per product/commission, sum of policy value as quantity, Payment fees as unit price, product account code as ledger account
one asset (line) per policy : policy value as quantity, Payment fees as unit price, product account code as ledger account (dependent detail as asset description)
insuree Cash payment (doesn’t exist yet)
one accountPayable per insuree (for all dependant), one line per cash payment (level of Item and service)
one accountPayable per period, one line per cash payment claim
Create a FHIR interface for the accounting systems
Here the FHIR ressource to be used:
https://www.hl7.org/fhir/invoice.html
Front end
Current Batch run Screen (picture above) should be rename Account Payable
Launch Batch Run section will become “Account Payable“ with those parameters
Either drop down as current screen
General Account Payable section
Select “Account payable”
Payment plan picker in the future data model
can be a static drop down list for the old model: Valuation / Capitation / Commission fees / payment fees + Product picker
Or calculation for payment plan using the product configuration could be created, then payment plan could be created for each products
two datetime entries: DateFrom/DateTo
Location picker
Export Account Payable section
Payment plan picker in the future data model
can be a static drop down list for the old model: Valuation / Capitation / Commission fees / payment fees + Product picker
Or calculation for payment plan using the product configuration could be created, then payment plan could be created for each products
two datetime entries: DateFrom/DateTo
Location picker
group by: Product or third party
third party: user(EnrolmentOffice)/HF/”insuree”
section “payment plan calculated” that will display all “Account Payable generated” with there input detail in 1 column, working var in a second and the result in the third (relative index)
or use the Payment plan pages instead
search tab
search on all columns
3 dot menu “General Account Payable“ on selected line / query that will ask dateFrom/DateTo
3 dot menu “Export Account Payable“ on selected line / query that will ask dateFrom/DateTo and third party: user(EnrolmentOffice)/HF/”insuree”
Tab with payment plan calculated
search on all colums
will display the list of payment plan calculated (payment plan/date exe / dateFrom / dateTo)
doubleclick / click on edit will display the details in readonly
delete button can be use to delete the calculation (only for admin)
Account receivable, using the same structure as Account payable, when associated to the contract might also replace the “contribution/premium“