version = 1
status = active
UUID = 0a1b6d54-5681-4fa6-ac47-2a99c235eaa8
calculation_rule_name = “payment: capitation “
type = account_payable
sub_type = third_party_payment
dateValidTo = None
dateValidFrom = 2000-01-01
list of impacted parameters: NULL (will take data from product, claims … )
description = “ This calculation will, for the selected level and product, calculate how much the insurance need to pay the HF for the capitation financing “
Service
activeForObject(self, instance, context, type, sub_type)
instance.__class__ == PaymentPan and context IN (submit) and self.checkCalculation(instance)
check_calculation
BatchRUn → Location
if HF → locations
if location → ProductS (Product also related to Region if the location is a district)
if claim → claim product (MAX Product id from item and services)
if product → paymentPlans
if paymentPlan → check if UUID = this.UUID
calculate(cls, instance, *args[date_from, date_to, productid, location])
instance.__class__ == PaymentPlan
get all valuated claims that should be evaluated with capitation that matches args (existing function develop in TZ scope)
create a bill through the converters from the calculation result (save the calculation result in bill notes/item details)
billCreationFromCalculation(date_from, date_to, type, sub_type, product_id, location)
Registration on signals from other module(existing or not):
billCreationFromCalculation
Batchrun will trigger billCreationFromCalculation and will send: when the payment plan would be deliver the batch run page could be replaced by payment plan (this page could call billCreationFromCalculation service on selected payment plans) page and bill page.
if active_for_object(<fakepaymentplan>, 'submit', type, sub_type):
calculate(cls, <fakepaymentplan>, *args[date_from, date_to, productid, location])
Converter
[to be updated]
two way of creating the accountPayableare possible for the capitation, 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
bill:
field | type | comment |
subject_type | json | batch_run |
subject_id | json | run_id |
thirdparty_type | str | HF |
thirdparty_id | id/uuid | HFID |
code | str | CP-(PaymentPlan_code)-HFID-YYYYMM |
date_due | date | batch run date +30 days |
date_invoice | date | batch run date |
*dateValidFrom | date | validFrom: first day of batch run |
*dateValidTo | date | validTo: last first day of batch run |
amount_discount | float | N/A |
amount_net | float | Total without tax |
tax_analysis | json | N/A |
amount_total | float | total net |
status | int | validated |
currency_rcp_code | str | default-curency |
currency_code | str | default-curency-code |
note | bigttext |
|
terms | bigttext | Product: Product Name |
billItem
field | type | comment |
HistoryBusinessModel fields |
| validFrom: claim date from validTo:claim date to |
line_id |
| capitationPayment_id |
line_type |
| capitationPayment |
code | str | Paymentplan-Code |
description | str | Capitation payment |
details | json | capitation payment details |
ledger_account | int | N/A |
quantity | float | 1 |
unit_price | type | total to be paid |
deduction | float | n/a |
discount | float | n/a |
tax_rate | Calculation uuid | N/A |
tax_analysis | json | |
amount_total | float | net |
amount_net | float | total |